Знак доллара в js что это
Может кто-нибудь объяснить знак доллара в Javascript?
код, о котором идет речь, находится здесь:
какова цель знак доллара в имени переменной, почему бы просто не исключить?
7 ответов
из того, что я видел, многие люди, используя jQuery (вот как выглядит ваш пример кода для меня), как правило, префиксные переменные, содержащие объект jQuery с$, так что они легко идентифицируются и не смешиваются, скажем, с целыми числами.
Это имеет четкое объяснение того, для чего предназначен знак доллара.
знак доллара рассматривается как обычная буква или подчеркивание ( _ ). Для переводчика это не имеет особого значения.
в отличие от многих подобных языков, коды (например, функциональные и переменные имена) в Javascript может содержать не только буквы, цифры и подчеркивания, но может также содержать знаки доллара. Им даже разрешено начинать со знака доллара или состоять только знака доллара и ничего еще.
зачем вам нужен знак доллара в идентификаторе?
знак доллара используется в ecmascript 2015-2016 как ‘шаблон литералы’. Пример:
вот рабочий пример: https://es6console.com/j3lg8xeo/ Обратите внимание на этот знак»` «,не нормальные цитаты.
$ знак в Регулярные Выражения означает конец строки.
нет оснований. Возможно, человек, который закодировал его, пришел из PHP. Это имеет тот же эффект, как если бы вы назвали его «_item» или «item» или «item$$».
возможно, это какая-то венгерская нотация для кодера, чтобы отметить, что переменная является элементом DOM или чем-то еще.
согласно международному идентификатору Ecma, имена являются токенами, которые интерпретируются в соответствии с грамматикой, приведенной в разделе «идентификаторы»Глава 5 стандарта Unicode, с некоторыми небольшими модификациями. Идентификатор является IdentifierName, что не ReservedWord (см. 7.6.1). Грамматика идентификатора Unicode основана на обоих нормативные и информативные категории символов, определенные стандартом Unicode. Символы в указанных категориях в версии 3.0 стандарта Unicode должны рассматриваться как в этих категориях всеми соответствующими реализациями ECMAScript.этот стандарт определяет конкретные дополнения символов:
знак доллара ($) и символ подчеркивания (_) разрешается в любом месте в IdentifierName.
Ecma International Ассоциация индустрии основанная в 1961 и предназначенная к стандартизации информационно-коммуникационных технологий (ИКТ) и бытовой электроники (КЭ).
Почему переменная JavaScript начиналась со знака доллара?
Я часто вижу JavaScript с переменными, начинающимися со знака доллара. Когда/почему вы выбрали префикс переменной таким образом?
ОТВЕТЫ
Ответ 1
Очень часто использование jQuery заключается в том, чтобы различать объекты jQuery, хранящиеся в переменных из других переменных. Например, я бы определил
Я считаю, что это очень полезно при написании кода jQuery и позволяет легко видеть объекты jQuery, у которых есть другой набор свойств.
Ответ 2
Однако в следующей версии (5th Edition, которая является текущей), это ограничение было отброшено, а приведенный выше фрагмент заменен на
Ответ 3
Как уже упоминалось, знак доллара предназначен для использования с помощью механически сгенерированного кода. Однако это соглашение было нарушено некоторыми чрезвычайно популярными библиотеками JavaScript. JQuery, Prototype и MS AJAX (AKA Atlas) используют этот символ в своих идентификаторах (или как полный идентификатор).
Я лично его не использую, но думаю, что его использование действительно. Я думаю, что MS AJAX использует его для обозначения того, что функция является псевдонимом для некоторого более подробного вызова.
Это похоже на разумное соглашение.
Ответ 4
Ответ 5
Все приведенные выше примеры будут работать.
Ответ 6
Ответ 7
Префикс визуально отличает его от других переменных, таких как мои собственные статические переменные, заставляя меня понимать, что этот код является частью какой-либо библиотеки или другой, и с меньшей вероятностью конфликтует или путает других, когда они знают соглашение.
Он также не загромождает код (или требует дополнительной набрав), так как полностью указанное имя повторяется для каждого вызова библиотеки.
Мне нравится думать, что это похоже на то, что делают ключи-модификаторы для расширения возможностей отдельных клавиш.
Но это только мое собственное соглашение.
Ответ 8
Как я уже говорил в течение последних 4 лет, это позволит кому-то легко определить, указывает ли переменная, указывающая значение/объект или обернутый jQuery элемент DOM
Ответ 9
Хотя вы можете просто использовать его для префикса своих идентификаторов, он должен использоваться, например, для сгенерированного кода, например маркеры замены в шаблоне.
Ответ 10
$
Вы можете использовать plain
Здесь blah хранит возвращаемый элемент jQuery.
Ответ 11
Я был человеком, который создал эту конвенцию еще в 2006 году и продвинул ее в раннем списке рассылки jQuery, поэтому позвольте мне поделиться некоторыми историями и мотивацией вокруг него.
Принятый ответ дает следующий пример:
Собственно, я бы не использовал email_field здесь по двум причинам: names_with_underscores не являются идиоматическим JavaScript, а field на самом деле не имеет смысла для элемента DOM. Но я придерживался той же идеи.
Я пробовал несколько разных вещей, среди них что-то очень похожее на пример:
У меня был другой случай, когда функция получила элемент DOM в качестве параметра, а для него также нужен объект jQuery:
Затем я заметил общий шаблон:
Strikeout не идеальна, но вы можете получить идею: с некоторыми удалеными символами обе эти строки выглядят так:
Ответ 12
Ниже приведены правила для переменных
Все переменные JavaScript должны быть идентифицированы с уникальными именами.
Эти уникальные имена называются идентификаторами.
Идентификаторами могут быть короткие имена (например, x и y) или более описательные имена (возраст, сумма, totalVolume).
Общие правила построения имен переменных (уникальные идентификаторы):
Ответ 13
Angular использует для свойств, сгенерированных каркасом. Угадайте, они идут по (теперь несуществующей) подсказке, предоставленной ECMA-262 3.0.
Ответ 14
Если вы видите знак доллара ($) или знак двойного доллара ($$), и вам интересно, что это означает в рамках прототипа, вот ваш ответ:
Ответ 15
Ответ 16
Причина, по которой я иногда использую условные обозначения php с переменными javascript: При выполнении проверки ввода я хочу использовать те же алгоритмы, что и клиентские, и на стороне сервера. Я действительно хочу, чтобы обе стороны кода выглядели как можно более похожими, чтобы упростить обслуживание. Использование знаков доллара в именах переменных делает это проще.
(Кроме того, некоторые разумные вспомогательные функции помогают сделать код похожим, например, wrapping input-value-lookups, не-OO-версии strlen, substr и т.д. Тем не менее это требует некоторой ручной настройки.)
Ответ 17
Действительный идентификатор JavaScript shuold должен начинаться с буквы, подчеркивание (_) или знак доллара ($); последующие символы могут также быть цифрами (0-9). Поскольку JavaScript чувствителен к регистру, буквы включают символы «A» через «Z» (верхний регистр) и символы «a» через «z» (строчные буквы).
Шаблонные строки
Синтаксис
Описание
Многострочные литералы
Символы новой строки являются частью шаблонных литералов. Используя обычные строки, вставка переноса потребовала бы следующего синтаксиса:
То же с использованием шаблонных литералов:
Интерполяция выражений
Для вставки выражений в обычные строки вам пришлось бы использовать следующий синтаксис:
Теперь, при помощи шаблонных литералов, вам доступен «синтаксический сахар», делающий подстановки вроде той более читабельными:
Вложенные шаблоны
В ES2015 с шаблонными литералами без вложения:
В ES2015 с вложенными шаблонными литералами:
Теговые шаблоны
Расширенной формой шаблонных литералов являются теговые шаблоны. Они позволяют разбирать шаблонные литералы с помощью функции. Первый аргумент такой функции содержит массив строковых значений, а остальные содержат выражения из подстановок. В итоге, функция должна вернуть собранную строку (или что-либо совсем иное, как будет показано далее). Имя функции может быть любым.
Функция тега не обязана возвращать строку, как показано в примере ниже:
Сырые строки
Теговые шаблоны и экранирование символов
Поведение в ES2016
В ECMAScript 2016 теговые шаблоны следуют правилам экранирования следующих символов:
Поведение в ES2018
Теговые шаблоны должны позволять встраивать языки (например, DSLs или LaTeX), в которых широко используются многие другие экранирования. Предложение Редакция шаблонных литералов (уровень 4, одобренный к добавлению в стандарт ECMAScript 2018) устраняет синтаксические ограничения экранирования теговых шаблонов в ECMAScript.
Однако, некорректное экранирование символов по-прежнему нужно отображать в «приготовленном» отображении. Оно показывается в виде undefined в «приготовленном» массиве:
Заметьте, что ограничение на экранирование символов проявляется лишь в теговых шаблонах, и не проявляется в нетеговых шаблонных литералах:
Для вставки переменных в строку
Ссылки можно и чуть красивее оформлять, например так:
Василий Банников, это ссылки от лукавого, настоящие ссылки только в виде ссылки!
WbICHA, не слабо
Ну или просто у меня восприятие такое, что для меня очевидно, что ссылка, а что спойлер
Это Шаблонные строки.
Используют их, тк они компактнее и легче читаются, чем конкатенация.
Вот пример из документации:
До:
А ещё с помощью них можно делать магию:
Теговые шаблоны
PhpBuilder.ru
ваш путеводитель по веб программированию
Главное меню
Уроки по PHP
Символ доллара в JavaScript
В JavaScript символ доллара обычно встречается в объявлениях переменных и вызовах функций. Позвольте убедить вас, что здесь не кроется ничего таинственного, ведь это всего лишь имя переменной (идентификатор). В этом нет ничего странного. Например, безумно популярный JavaScript-фреймворк, о котором я уже писал (What is jQuery?) использует знак доллара для получения доступа к главному объекту jQuery.
И ещё. Поскольку переменные в JavaScript являются объектами, вы можете ссылаться на функции своими переменными. Вы даже можете присвоить «функцию-член» уже существующей функции. Но попытка присвоить функцию объекту, который ещё не существует обречена на провал в JavaScript. Если вы действительно хотите хорошо разобраться, обратите особое внимание на приведённый ниже код.
Теперь, используя полученные знания и не запуская этот код в браузере, можете ли вы сказать, будет ли он работать?
По соглашению, символ доллара ($), подчёркивания (_) и даже некоторые символы ASCII могут использоваться в любом месте идентификатора в JavaScript. В документации Ecma Script (7.6 Identifiers, ECMA-262, 3rd Ed.) сказано: «Символ доллара предназначен для использования только в автоматически сгенерированном коде». Это означает, что мы не должны использовать символ доллара ($) в идентификаторах, кроме тех случаев, когда мы пишем фреймворк. Вот список разрешённых символов, которые могут использоваться в идентификаторах:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence