Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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.