Что такое знак доллара в 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
Самое простое решение, чтобы увидеть, что это такое и где оно определено, это, вероятно, набрать $()
и поставить точку останова на этой линии.