Код, о котором идет речь, находится здесь:
var $item = $(this).parent().parent().find('input');
Какова цель знака доллара в имени переменной, почему бы просто не исключить его?
document.querySelector
иdocument.querySelectorAll
Код, о котором идет речь, находится здесь:
var $item = $(this).parent().parent().find('input');
Какова цель знака доллара в имени переменной, почему бы просто не исключить его?
document.querySelector
иdocument.querySelectorAll
Ответы:
'$' В переменной не означает ничего особенного для интерпретатора, как подчеркивание.
Из того, что я видел, многие люди, использующие jQuery (как выглядит ваш пример кода для меня), имеют тенденцию ставить префиксные переменные, которые содержат объект jQuery, с помощью $, чтобы их можно было легко идентифицировать и не смешивать, скажем, с целыми числами ,
Функция знака доллара $()
в jQuery является библиотечной функцией, которая часто используется, поэтому желательно короткое имя.
var $=function(){}
- это то же самое, что и делать var a=function(){}
.
jQuery(document).ready(function($){
... Тогда $ используется внутри реализации функции.
$scope
$ это один из символов в этом имени. Точно так же, как если вы снимаете «в e
конце» $scope
, это не сработает, так что «взятие» $
также не сработает. В случае, если вы видите что-то вроде $( "a" ).addClass( "test" )
, знак доллара - это полное название того, что это такое.
В вашем примере $ не имеет особого значения, кроме как символ имени.
Однако в ECMAScript 6 (ES6) $ может представлять литерал шаблона
var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.
Знак $ является идентификатором для переменных и функций.
Это имеет четкое объяснение того, для чего предназначен знак доллара.
Вот альтернативное объяснение: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
Знак доллара рассматривается как обычная буква или знак подчеркивания ( _
). Это не имеет особого значения для переводчика.
В отличие от многих похожих языков, идентификаторы (такие как функциональные имена и имена переменных) в Javascript могут содержать не только буквы, цифры и символы подчеркивания, но также могут содержать знаки доллара . Они даже могут начинаться со знака доллара или состоять только из знака доллара и ничего более.
Таким образом, $
является допустимой функцией или именем переменной в Javascript.
Зачем вам знак доллара в идентификаторе?
Синтаксис на самом деле не навязывает какое-либо конкретное использование знака доллара в идентификаторе, поэтому вам решать, как вы хотите его использовать. В прошлом часто рекомендовалось начинать идентификатор со знака доллара только в сгенерированном коде, то есть в коде, созданном не вручную, а генератором кода.
В вашем примере, однако, это не так. Похоже, кто-то просто поставил знак доллара в начале для забавы - возможно, это был программист PHP, который сделал это по привычке, или что-то в этом роде. В PHP все имена переменных должны иметь знак доллара перед ними.
В настоящее время в интерпретаторе существует еще одно общее значение знака доллара: объект jQuery, имя которого состоит только из одного знака доллара ( $
). Это соглашение заимствовано из более ранних Javascript-фреймворков, таких как Prototype, и если jQuery используется с другими такими фреймворками, произойдет конфликт имен, поскольку они оба будут использовать имя $
(jQuery может быть настроен на использование другого имени для своего глобального объекта) , В Javascript нет ничего особенного, что позволяет jQuery использовать один знак доллара в качестве имени объекта; как уже упоминалось выше, это просто еще одно действительное имя идентификатора.
var $j = jQuery.noConflict();
теперь $ j является объектом jQuery.
Знак доллара используется в ecmascript 2015-2016 как «шаблонные литералы». Пример:
var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
Вот рабочий пример: https://es6console.com/j3lg8xeo/ Обратите внимание на этот знак " ` ", это не нормальные кавычки.
Вы также можете встретить $ при работе с библиотекой jQuery .
Знак $ в регулярных выражениях означает конец строки.
Нет причин. Возможно, человек, который его кодировал, пришел из PHP. Это имеет тот же эффект, как если бы вы назвали его «_item» или «item» или «item $$».
В качестве суффикса (например, «item $», произносится «items») он может обозначать наблюдаемое, например элемент DOM, в виде соглашения, называемого «финская нотация», аналогичного венгерской нотации.
Вот хорошее краткое объяснение видео: https://www.youtube.com/watch?v=Acm-MD_6934
Согласно Ecma International, Идентификационные имена - это токены, которые интерпретируются в соответствии с грамматикой, приведенной в разделе «Идентификаторы» главы 5 стандарта Unicode, с некоторыми небольшими изменениями. Identifier - это IdentifierName, которое не является ReservedWord ( см. 7.6.1 ). Грамматика идентификатора Unicode основана на нормативных и информативных категориях символов, определенных стандартом Unicode. Символы в указанных категориях в версии 3.0 стандарта Unicode должны обрабатываться так же, как и в этих категориях, для всех соответствующих реализаций ECMAScript. Этот стандарт определяет конкретные добавления символов:
Знак доллара ($) и подчеркивание (_) разрешены в любом месте в IdentifierName .
Дополнительную информацию можно найти по адресу : http://www.ecma-international.org/ecma-262/5.1/#sec-7.6.
Ecma International - это отраслевая ассоциация, основанная в 1961 году и занимающаяся стандартизацией информационных и коммуникационных технологий (ИКТ) и бытовой электроники (CE).
При использовании jQuery использование $
символа в качестве префикса в имени переменной просто по соглашению; это совершенно необязательно и служит только для указания того, что переменная содержит объект jQuery, как в вашем примере.
Это означает, что когда нужно вызвать другую функцию jQuery для объекта, вам не нужно будет оборачивать ее $()
снова. Например, сравните это:
// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this
// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary
С $
префиксом переменные, уже содержащие объекты jQuery, мгновенно распознаются, а код становится более читабельным и исключает двойное / множественное перенос с помощью $()
.