Код, про який йдеться, тут:
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, як прототип, і якщо 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, імена - це лексеми, які інтерпретуються відповідно до граматики, наведеної в розділі "Ідентифікатори" глави 5 стандарту Unicode, з деякими невеликими модифікаціями. Ідентифікатор - це ідентифікаційне ім'я, яке не є зарезервованим словом ( див. 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, миттєво впізнавані, а код - читабельніший, і виключається подвійне / багаторазове обгортання $()
.