Что такое знак доллара в Javascript, если не JQuery

Несколько лет назад я занимался программированием на javascript / jQuery и только начал снова. В то время знак доллара использовался для всех функций jQuery, и если библиотека jQuery не была импортирована, знак доллара не определялся.

Сегодня я запустил Firefox в абсолютно пустом html-файле без библиотек javascript, и все же знак доллара указывает на что-то. Если я открою консоль Firefox и наберу '$', я получу "function()",

1) Верно ли то, что знак доллара не был присвоен несколько лет назад, или я помню неправильно?

2) Что такое знак доллара, если не jQuery?

6 ответов

Решение

1) Верно ли то, что знак доллара не был присвоен несколько лет назад, или я помню неправильно?

Это правильно и все еще верно.

2) Что такое знак доллара, если не jQuery?

Firefox и Chrome реализуют $, $$ и несколько других в качестве вспомогательных команд. Оба установят $$ в document.querySelectorAll()и установить $ в document.querySelector если window.$ не был определен

Так что то, что вы видите, на самом деле не стандартный JavaScript, а помощник в консоли разработчика вашего браузера. Это также не jQuery (если вы не находитесь на странице, использующей jQuery). Тем не менее, его поведение близко к jQueryотносительно этого querySelector (для одиночных матчей) и querySelectorAll (для нескольких совпадений) дает вам почти такую ​​же силу, как и селектор jQuery.

Это ничего не значит для переводчика, как подчеркивание

Из спецификации ECMAScript:

Знак доллара ($) и подчеркивание (_) разрешены в любом месте идентификатора. Знак доллара предназначен для использования только в механически сгенерированном коде.

Вы также можете проверить JavaScript знак доллара ($) - для чего он нужен?

По соглашению, знак доллара ($), знак подчеркивания (_) и даже некоторый символ ASCII разрешено использовать в любом месте идентификатора JavaScript (Источник: документация Ecma Script (7.6 Идентификаторы, ECMA-262, 3-е изд.) Доллар Знак предназначен для использования только в механически сгенерированном коде. Это означает, что мы не хотим использовать знак доллара ($) в именах наших идентификаторов, если только мы не пишем каркас. Ниже приведен список разрешенных символов, которые можно использовать в любом месте имени идентификатора:

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence

РЕДАКТИРОВАТЬ:-

На самом деле функция знака доллара стала более или менее де-факто document.getElementById(),

Чтобы подтвердить мою точку зрения, проверьте это:

$ (селектор)

Возвращает один элемент, соответствующий данному селектору CSS. В старых версиях Firebug это было эквивалентно document.getElementById.

Dollar sign($) не был назначен, но некоторые браузер добавил функцию для специального использования.

Как Google Chrome, если вы печатаете $ на консоли он вернет:

function $(selector, [startNode]) { [Command Line API] }

Эта функция предназначена для Google Chrome Developer Tool, и позволяет отлаживать ее проще.

если вы печатаете $('div'), он вернет что-то вроде этого:

e.fn.e.init[178]

и включать каждый div DOM объект в нем.

Кстати, после того, как вы нажмете правую кнопку мыши, чтобы выбрать элемент, вы можете получить доступ к области видимости angular.js по типу. $scope на консоли

Обратите внимание, что $$ не совсем document.querySelectorAllпотому что в отличие от этой функции она не возвращает NodeList:

document.body.querySelectorAll('p') instanceof NodeList 
true

$$('p') instanceof NodeList
false

Array.isArray($$('p'))
true

Так $$(selector) действительно больше похоже Array.from(document.querySelectorAll(selector)), Это означает, что методы массива, такие как .forEach и друзья доступны на $$, что на самом деле весьма полезно.

Чтобы завершить остальные ответы здесь, MooTools также использует $ как псевдоним document.getElementById,

Это действительно проверяет, если $ берется и будет по умолчанию document.id,

Это может быть что угодно, как $ является допустимым именем переменной, так же, как dollar,

Из ECMAScript:

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

Самое простое решение, чтобы увидеть, что это такое и где оно определено, это, вероятно, набрать $() и поставить точку останова на этой линии.

Другие вопросы по тегам