Что такое знак доллара в Javascript, если не jQuery
Несколько лет назад я разработал несколько javascript/jQuery-программ, и я просто начал снова. Тогда знак доллара использовался для всех функций jQuery, и если библиотека jQuery не была импортирована, знак доллара не был определен.
Сегодня я запустил Firefox в полностью пустой html файл без библиотек javascript, и все же знак доллара указывает на что-то. Если я открою консоль Firefox и наберу '$', я получу "function()"
.
1) Правильно ли, что знак доллара не был назначен, несколько лет назад, или я неправильно помню?
2) Что такое знак доллара, если не jQuery?
Ответы
Ответ 1
1) Правильно ли, что знак доллара не был назначен, несколько лет назад, или я неправильно помню?
Это верно и верно.
2) Что такое знак доллара, если не jQuery?
Firefox и Chrome реализовать $
, $$
и несколько других в качестве вспомогательных команд, Оба устанавливают $$
в document.querySelectorAll()
и устанавливают $
в document.querySelector
, если window.$
не определено.
То, что вы видите, на самом деле не является стандартным JavaScript, а помощником в консоли разработчика вашего браузера. Это также не jQuery (пока вы не на странице с помощью jQuery). Однако это поведение близко к таковому jQuery
, касающемуся того, что querySelector
(для одиночных совпадений) и querySelectorAll
(для нескольких совпадений) дает вам почти ту же силу, что и селектор jQuery.
Ответ 2
Это ничего не значит для интерпретатора, как подчеркивание
Из спецификации ECMAScript:
Знак доллара ($) и символ подчеркивания (_) разрешены в любом месте идентификатор. Знак доллара предназначен для использования только в механически сгенерированный код.
Вы также можете проверить Знак доллара JavaScript ($) - для чего?
По соглашению знак доллара ($), символ подчеркивания (_) и даже некоторые Символу ASCII разрешено использовать в любом месте JavaScript идентификатор (Источник: Ecma Script документация (7.6 Идентификаторы, ECMA-262, 3-е изд.) Знак доллара предназначен для использования только в механически сгенерированный код. Это означает, что мы не хотим использовать знак доллара ($) в наших именах идентификаторов, если мы не пишем фреймворк. Ниже приведен список разрешенных символов, которые могут быть используется везде в имени идентификатора:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence
EDIT: -
Фактически функция знака доллара стала более или менее де-факто ярлыком к document.getElementById()
.
Чтобы подтвердить мой контрольный пункт ,:
$(селектор)
Возвращает один элемент, соответствующий данному селектору CSS. В старых Firebug, это было эквивалентно document.getElementById.
Ответ 3
Dollar sign($)
не был назначен, но некоторая функция добавления браузера для специального использования.
Как и Google Chrome, если вы наберете $
на консоли, он вернется:
function $(selector, [startNode]) { [Command Line API] }
Эта функция назначена для Google Chrome Developer Tool и позволяет более легко отлаживать.
если вы наберете $('div')
, он вернет что-то вроде этого:
e.fn.e.init[178]
и включить в него каждый объект div
DOM.
BTW, после того, как вы нажмете правую кнопку мыши для выбора элемента, вы можете пригласить angular.js область по типу $scope
на консоли
Ответ 4
Обратите внимание, что $$
не совсем 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
и друзья доступны на $$
, что на самом деле весьма полезно.
Ответ 5
Это может быть что угодно, поскольку $
является допустимым именем переменной, как и dollar
.
Из ECMAScript:
Identifier ::
IdentifierName but not ReservedWord
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence
Самое простое решение, чтобы увидеть, что это такое и где оно определено, вероятно, должно было бы набрать $()
и поставить точку останова в этой строке.
Ответ 6
Чтобы выполнить другие ответы здесь, MooTools также использует $
как псевдоним для document.getElementById
.
Он проверяет, выполняется ли $
и по умолчанию будет document.id
.