2010-05-21 3 views
15

В чем разница между этими утверждениями? Я знаю, что «var $ test» объявляет переменную jquery, но в чем разница переменной jquery с общей переменной javascript?

ответ

24

Ничего. Нет разницы. $ является допустимым символом в идентификаторе JavaScript, но не имеет особого значения. В самом деле, в 3 спецификации ECMAScript в разделе 7.6 говорится, что

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

... хотя в настоящее время события, вероятно, сделали рекомендацию устаревшей. Действительно, недавняя спецификация ECMAScript 5 исключает последнее предложение.

29

$test является соглашение, используемое, чтобы указать, что эта переменная является объектом Jquery и вы можете вызвать стандартные функции на нем в то время как test может быть стандартный элемент DOM, и вы не можете вызвать функцию val на ней, например.

Например:

var $test = $('#someId'); 
var test = document.getElementById('#someId'); 

Вы можете сделать $test.text();, но вы не можете сделать test.text();

+0

Так это означает, что даже если я не использовать знак «$», я по-прежнему будет иметь возможность вызывать стандартные функции на этом объекте, не так ли? –

+3

@ Саем Ахмед: Верно, это просто имя. У этого есть абсолютно ** нет ** смысла! Было бы так же, если бы вы спросили, являются ли имена переменных, начинающиеся с 't', как-то особенными. –

+0

Я никогда не знал об этом соглашении, но это имеет большой смысл! Спасибо вам за это разъяснение, Феликс. – malvim

2

нет никакой разницы между var $test и var test. но всегда полезно знать, какие данные находятся в вашей переменной: (например, если кто-то просто хочет изменить функцию в вашем коде, не прочитав ее, или вам нужно будет console.log ваши вары знать, что в ней)

здесь некоторые примеры:

var arrTest = [1, 2, a, b, c], //Array 
objTest = {test: 1, test2: 2}, //Object 
strTest = "test", //String 
intTest = 4, //integer 
$test = $("#test") //jqueryObject 

, но было бы также работать, как этот

var Test1 = [1, 2, a, b, c], //Array 
test2 = {test: 1, test2: 2}, //Object 
Test3 = "test", //String 
Test4 = 4, //integer 
$test = $("#test") //jquery Object 

я думаю, что вас смущает это $() форма JQuery.

Jquery в основном функция, заданная на имя переменной $:

var $ = function(e){ // the jquery magic } 

, но вы все еще можете использовать $somethingelse в качестве переменной.

-1

Попробуйте критиковать JQuery.

Различия между встроенным javascript и каркасом вроде JQuery - это zip - он существует.

Если вы хотите управлять javascript - пропустите JQuery.

Я использую GMap из-за его функций - я не могу самостоятельно разработать функцию GMap.

Но JQuery и extJS просто предлагает структуру - нет funtionallity, что вы не можете сделать сами.

Майк

+3

-1: Это ответ на какой вопрос? – Kowser

Смежные вопросы