что означает название функции с «$»? [Дубликат]

url="jdbc:postgresql//localhost:5432/mmas"

Этот URL-адрес выглядит неправильно, вам нужно следующее:

url="jdbc:postgresql://localhost:5432/mmas"
910
задан Yi Jiang 24 September 2011 в 06:47
поделиться

16 ответов

Очень распространенное использование в jQuery - это отличать объекты jQuery, хранящиеся в переменных от других переменных. Например, я бы определил

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

. Я считаю, что это очень полезно при написании кода jQuery и позволяет легко видеть объекты jQuery, которые имеют другой набор свойств.

1274
ответ дан jonstjohn 20 August 2018 в 07:22
поделиться
  • 1
    И я использую $this = $(this) много! – kroimon 5 December 2011 в 15:56
  • 2
    Это РЕАЛЬНАЯ венгерская нотация. Он передает информацию о том, что хранится в переменной, превышающей имя переменной. A ++ снова будет Венгрия. – Artemis 29 November 2013 в 03:54
  • 3
    Я бы хотел, чтобы документация jquery использовала эту нотацию ... Это действительно действительно полезно. – pedromanoel 28 January 2014 в 13:05
  • 4
    Thumbs up для $. Но подчеркивания в именах переменных должны быть предотвращены, обычные JS-Variables должны использовать camelCase. email_fields - & gt; emailField. Только допустимый прецедент для _ является префиксом для частных / защищенных свойств. – cschuff 22 September 2014 в 13:18
  • 5
    @cschuff Это довольно утверждение ... Я предпочитаю подчеркивания для всех локальных переменных и зарезервировать верблюд для свойств объектов-прототипов. – Paulpro 20 February 2015 в 18:27

Поскольку _ в начале имени переменной часто используется для указания частной переменной (или, по крайней мере, одной из них, которая должна оставаться закрытой), я нахожу $ удобным для добавления перед моими собственными краткими псевдонимами к родовым (g1) Например, при использовании jQuery я предпочитаю использовать переменную $J (вместо $) и использовать $P при использовании php.js и т. д.

Префикс делает его визуально отличным от других переменных, таких как мои собственные статические переменные, заставляя меня понимать, что этот код является частью какой-либо библиотеки или другой, и с меньшей вероятностью конфликтует или путает других, когда они знают соглашение .

Он также не загромождает код (или требует дополнительной настройки), так как полностью указанное имя повторяется для каждого вызова библиотеки.

Мне нравится думать, что это похоже на к тем, какие ключи-модификаторы делают для расширения возможностей отдельных ключей.

Но это только мое собственное соглашение.

2
ответ дан Brett Zamir 20 August 2018 в 07:22
поделиться
-2
ответ дан Happy Singh 20 August 2018 в 07:22
поделиться

${varname} - это просто соглашение об именах, которое разработчики jQuery используют для выделения переменных, которые содержат элементы jQuery.

Обычная {varname} используется для хранения общих материалов, таких как тексты и строки. ${varname} содержит элементы, возвращаемые из jQuery.

Вы можете использовать plain {varname} для хранения элементов jQuery, но, как я сказал в начале, это отличает его от простых переменных и упрощает понимайте (представьте себе, что это путаница для простой переменной и все вокруг, чтобы понять, что она держит).

Например:

var $blah = $(this).parents('.blahblah');

Здесь blah хранит возвращаемый элемент jQuery.

Итак, когда кто-то еще видит $blah в коде , они поймут, что это не просто строка или число, это элемент jQuery.

0
ответ дан ketan 20 August 2018 в 07:22
поделиться

Использование угловых для свойств, генерируемых каркасом. Угадайте, что они идут по (теперь несуществующей) подсказке, предоставленной ECMA-262 3.0.

-2
ответ дан Manish Jhawar 20 August 2018 в 07:22
поделиться

В 1-м, 2-м и третьем выпусках ECMAScript использование переменных $ -prefixed переменных явно не поощрялось спецификацией, за исключением контекста автогенерированного кода:

Знак доллара ($) и символ подчеркивания (_) разрешены в любом месте идентификатора. Знак доллара предназначен для использования только в механически сгенерированном коде.

Однако в следующей версии ([1] 5th Edition , которая является текущей), это ограничение было , а приведенный выше фрагмент заменен на

Знак доллара ($) и знак подчеркивания (_) разрешены в любом месте в IdentifierName .

Таким образом, знак $ теперь может свободно использоваться в именах переменных. Определенные структуры и библиотеки имеют свои собственные условные обозначения о значении символа, отмеченные в других ответах здесь.

222
ответ дан Mark Amery 20 August 2018 в 07:22
поделиться
  • 1
    Хотя это может быть правдой, действительно ли это помогает ответить на вопрос OP? Принимаемый в настоящее время ответ лучше - когда начинающий программист JS видит $variable, вероятно, потому, что он содержит весь объект jQuery. – rinogo 24 March 2016 в 20:36
  • 2
  • 3
    @yoyo_fun: код, который генерируется компьютером, а не написан человеком. – cic 28 April 2016 в 14:11
  • 4
  • 5
    «Он отвечает на вопрос с некоторой абсолютной истиной». Собственно, правда заключалась в том, что разработчики полностью игнорировали это замечание из спецификации языка ... и, вероятно, все еще есть. :) – Stijn de Witt 1 August 2016 в 22:05

Стево прав, смысл и использование знака долларового скрипта (в Javascript и платформе jQuery, но не в PHP) полностью семантичен. $ - символ, который может использоваться как часть имени идентификатора. Кроме того, знак доллара, возможно, не самый «странный», с которым вы можете столкнуться в Javascript. Вот несколько примеров правильных имен идентификаторов:

var _       = function() { alert("hello from _"); }
var \u0024  = function() { alert("hello from $ defined as u0024"); }
var Ø       = function() { alert("hello from Ø"); }
var $$$$$   = function() { alert("hello from $$$$$"); }

Все приведенные выше примеры будут работать.

Попробуйте их.

19
ответ дан Matt 20 August 2018 в 07:22
поделиться

Я был человеком, который создал эту конвенцию еще в 2006 году и продвинул ее в раннем списке рассылки jQuery, поэтому позвольте мне поделиться с ней некоторой историей и мотивацией.

Принятый ответ дает этот пример :

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

Но это не очень хорошо иллюстрирует это. Даже без $ у нас все еще есть два разных имени переменной: email и email_field. Там много хорошего. Зачем нам нужно бросать $ в одно из имен, когда у нас уже есть два разных имени?

На самом деле, я бы не использовал email_field здесь по двум причинам: names_with_underscores не идиоматический JavaScript, а field на самом деле не имеет смысла для элемента DOM. Но я придерживался той же идеи.

Я пробовал несколько разных вещей, среди которых нечто очень похожее на пример:

var email = $("#email"), emailElement = $("#email")[0];
// Now email is a jQuery object and emailElement is the first/only DOM element in it

(Конечно, объект jQuery может иметь больше чем один элемент DOM, но в коде, над которым я работал, было много селекторов id, поэтому в этих случаях было соответствие 1: 1.)

У меня был другой случай, когда функция получила DOM в качестве параметра, а также для него нужен объект jQuery:

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var emailJQ = $(email);
    // Now email is the DOM element and emailJQ is a jQuery object for it
}

Ну, это немного запутанно! В одном из моих битов кода email является объектом jQuery, а emailElement является элементом DOM, а в другом, email является элементом DOM, а emailJQ является объектом jQuery.

Не было согласованности, и я продолжал смешивать их. Плюс это было немного неприятно, чтобы иметь возможность составлять два разных имени для одного и того же: один для объекта jQuery и другой для соответствующего элемента DOM. Кроме того, email, emailElement и emailJQ, я продолжал пробовать и другие варианты.

Затем я заметил общий шаблон:

var email = $("#email");
var emailJQ = $(email);

Так как JavaScript обрабатывает $ как просто другое письмо для имен, и поскольку у меня всегда был объект jQuery обратно из вызова $(whatever), модель, наконец, осенила меня. Я мог бы принять вызов $(...) и просто удалить некоторые символы, и это придумает довольно приятное имя:

$("#email")
$(email)

Strikeout не идеальна, но вы можете получить идею: с некоторыми символы удалены, обе эти строки выглядят так:

$email

Вот тогда я понял, что мне не нужно составлять соглашение, подобное emailElement или emailJQ. На меня уже было красивое соглашение: возьмите несколько символов из вызова $(whatever), и он превратится в $whatever.

var $email = $("#email"), email = $email[0];
// $email is the jQuery object and email is the DOM object

и:

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var $email = $(email);
    // $email is the jQuery object and email is the DOM object
    // Same names as in the code above. Yay!
}

Поэтому мне не приходилось составлять два разных имени все время, но просто можно использовать одно и то же имя с префиксом $ или без него. Префикс $ был хорошим напоминанием о том, что я имел дело с объектом jQuery:

$('#email').click( ... );

или:

var $email = $('#email');
// Maybe do some other stuff with $email here
$email.click( ... );
12
ответ дан Michael Geary 20 August 2018 в 07:22
поделиться
  • 1
    Отлично. Это была замечательная мысль @ Майкл – smilyface 16 May 2018 в 12:38

Как я уже говорил в течение последних 4 лет, это позволит кому-то легко определить, указывает ли переменная, указывающая значение / объект или обернутый jQuery элемент DOM

Ex:
var name = 'jQuery';
var lib = {name:'jQuery',version:1.6};

var $dataDiv = $('#myDataDiv');

в приведенном выше примере, когда я вижу переменную «$ dataDiv», я могу легко сказать, что эта переменная указывает на обернутый jQuery элемент DOM (в данном случае это div). а также я могу вызвать все методы jQuery, не обматывая объект снова, как $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () вместо $ ($ dataDiv) .append ().

Надеюсь, это может помочь. поэтому, наконец, хочу сказать, что будет хорошей практикой следовать этому, но не обязательно.

2
ответ дан Naga Srinu Kapusetti 20 August 2018 в 07:22
поделиться

Причина, по которой я иногда использую условные обозначения php с переменными javascript: при выполнении проверки ввода я хочу использовать те же алгоритмы как на стороне клиента, так и на стороне сервера. Я действительно хочу, чтобы обе стороны кода выглядели как можно более похожими, чтобы упростить обслуживание. Использование знаков доллара в именах переменных делает это проще.

(Кроме того, некоторые разумные вспомогательные функции помогают сделать код похожим, например, обертывание ввода-значения-запросов, не-OO-версий strlen, substr и т. Д. Это все еще требует некоторой ручной настройки, хотя.)

-4
ответ дан not-just-yeti 20 August 2018 в 07:22
поделиться

Действительный идентификатор JavaScript shuold должен начинаться с буквы, подчеркивания (_) или знака доллара ($); последующие символы также могут быть цифрами (0-9). Поскольку JavaScript чувствителен к регистру, буквы включают символы «A» - «Z» (верхний регистр) и символы «a» - «z» (строчные буквы).

Подробности: https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables

-4
ответ дан Pang 20 August 2018 в 07:22
поделиться

Если вы видите знак доллара ($) или знак двойного доллара ($$) и интересуетесь тем, что это означает в структуре Prototype, вот ваш ответ:

$$('div');
// -> all DIVs in the document.  Same as document.getElementsByTagName('div')!

$$('#contents');
// -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document).

$$('li.faux');
// -> all LI elements with class 'faux'

Источник : http://www.prototypejs.org/api/utility/dollar-dollar

-3
ответ дан RussellW 20 August 2018 в 07:22
поделиться
  • 1
    ОП конкретно заявляет, что он не спрашивает об этой форме долларового префикса. – Nigel Alderton 17 August 2012 в 10:43
  • 2
    Почему это вниз, когда угловой нет? +1 .. – Christopher Wirt 29 June 2015 в 13:48

Хотя вы можете просто использовать его для префикса своих идентификаторов, он должен использоваться, например, для сгенерированного кода, например, для маркеров замены в шаблоне.

0
ответ дан Ryan Abbott 20 August 2018 в 07:22
поделиться

В контексте AngularJS префикс $ используется только для идентификаторов кода фрейма. Пользователям фреймворка дается указание не использовать его в своих идентификаторах:

Угловые пространства имен $ и $$

Чтобы предотвратить случайные столкновения имен с вашим кодом, Угловые префиксы имен общедоступных объектов с $ и именами частных объектов с $$. Пожалуйста, не используйте префикс $ или $$ в вашем коде.

Источник: https://docs.angularjs.org/api

49
ответ дан Travis 20 August 2018 в 07:22
поделиться
  • 1
    @nilskp, почему так? – Mark Amery 4 May 2014 в 15:13
  • 2
    @MarkAmery, в то время, когда я писал, что AngularJS был довольно новым, и это была / обычная практика именования для префикса объектов jQuery с помощью $. В действительности это показало, что это не проблема, потому что редко, если вообще когда-либо, смешивается код jQuery с угловым кодом. Так что сегодня я не чувствую себя так. – nilskp 4 May 2014 в 21:30

Символ $ не имеет особого значения для механизма JavaScript. Это просто еще один действительный символ в имени переменной, например a-z, A-Z, _, 0-9 и т. Д. ...

6
ответ дан user 20 August 2018 в 07:22
поделиться
  • 1
    правда, но не то, что было задано. Я пришел сюда, чтобы понять, почему он был использован, и кажется, что случай, когда я его видел, заключался в том, чтобы различить var, содержащий объект jquery между var, содержащим объект dom. – rtpHarry 1 June 2011 в 23:42
  • 2
  • 3

Как уже упоминалось, знак доллара предназначен для использования с помощью механически сгенерированного кода. Однако это соглашение было нарушено некоторыми чрезвычайно популярными библиотеками JavaScript. JQuery, Prototype и MS AJAX (AKA Atlas) используют этот символ в своих идентификаторах (или как полный идентификатор).

Короче говоря, вы можете использовать $ всякий раз, когда захотите. (Переводчик не будет жаловаться.) Вопрос в том, когда вы хотите его использовать?

Я лично его не использую, но думаю, что его использование действительно. Я думаю, что MS AJAX использует его для обозначения того, что функция является псевдонимом для некоторого более подробного вызова.

Например:

var $get = function(id) { return document.getElementById(id); }

Это похоже на разумное соглашение.

56
ответ дан Wesley Murch 20 August 2018 в 07:22
поделиться
  • 1
    JQuery НЕ использует это в идентификаторах, причина в том, что для $ .X просто нужно ввести less - jQuery.X идентичен, на самом деле $ .X - это псевдоним пространства имен для jQuery.X - каждая функция jQuery находится в пределах jQuery-ns, а не $ – specializt 12 July 2013 в 05:15
  • 2
    @specializt, как я сказал 5 лет назад "или как полный идентификатор". По идентификатору я имею в виду стандартное определение CS, которое является лексическим токеном, который не является ключевым словом на языке. В этом случае $ и jQuery представляют собой два разных идентификатора, которые ссылаются на одно и то же значение. Но тем не менее они оба являются идентификаторами. – Benry 12 July 2013 в 06:32
Другие вопросы по тегам:

Похожие вопросы: