달러 기호로 시작하는 변수가있는 JavaScript를 자주 볼 수 있습니다. 이런 식으로 변수 접두사를 언제 / 왜 선택 하시겠습니까?
(I 대해 묻는 게 아니에요 $('p.foo')
당신이 jQuery를 다른 사람에서 볼 수 있다는 구문하지만 일반 변수는 같은 $name
과 $order
)
달러 기호로 시작하는 변수가있는 JavaScript를 자주 볼 수 있습니다. 이런 식으로 변수 접두사를 언제 / 왜 선택 하시겠습니까?
(I 대해 묻는 게 아니에요 $('p.foo')
당신이 jQuery를 다른 사람에서 볼 수 있다는 구문하지만 일반 변수는 같은 $name
과 $order
)
답변:
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 객체를 쉽게 볼 수있게합니다 .
ECMAScript 의 1 판 , 2 판 및 3 판에서 $ 접두사 변수 이름을 사용하는 것은 자동 생성 코드의 컨텍스트를 제외하고 사양에 의해 명시 적으로 권장되지 않습니다.
달러 기호 (
$
)와 밑줄 (_
)은 식별자의 어느 곳에 나 허용됩니다. 달러 기호는 기계적으로 생성 된 코드에서만 사용하기위한 것입니다.
그러나 다음 버전 (현재 5 판 )에서는이 제한이 없어지고 위의 내용은
달러 기호 (
$
)와 밑줄 (_
)은 IdentifierName의 어느 곳에서나 허용됩니다 .
따라서 $ 기호를 변수 이름에 자유롭게 사용할 수 있습니다. 특정 프레임 워크 및 라이브러리에는 심볼의 의미에 대한 자체 규칙이 있으며 여기에 다른 답변에 언급되어 있습니다.
$variable
전체 jQuery 객체를 포함하고 있기 때문일 수 있습니다.
다른 사람들이 언급했듯이 달러 기호는 기계적으로 생성 된 코드에 사용됩니다. 그러나이 규칙은 널리 사용되는 일부 JavaScript 라이브러리에 의해 손상되었습니다. JQuery, 프로토 타입 및 MS AJAX (AKA Atlas)는 모두이 문자를 식별자 (또는 전체 식별자)로 사용합니다.
요컨대 $
원하는 때마다 사용할 수 있습니다 . (인터프리터는 불평하지 않습니다.) 질문은 당신이 할 때 원하는 그것을 사용할 수 있나요?
나는 개인적으로 사용하지 않지만 그 사용은 유효하다고 생각합니다. MS AJAX는이 기능을 사용하여 함수가 좀 더 자세한 호출의 별칭임을 나타냅니다.
예를 들면 다음과 같습니다.
var $get = function(id) { return document.getElementById(id); }
그것은 합리적인 협약처럼 보입니다.
AngularJS와 관련하여 $
접두사는 프레임 워크 코드의 식별자에만 사용됩니다. 프레임 워크 사용자는 자신의 식별자에 프레임 워크를 사용하지 않아야합니다.
각도 네임 스페이스
$
와$$
실수로 코드와 이름이 충돌하는 것을 방지하기 위해 Angular는 공용 객체 이름 앞에
$
개인 객체 이름을 접두어로 붙입니다$$
. 코드에서$
또는$$
접두사를 사용하지 마십시오 .
저는 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는 $
단순히 이름을 나타내는 또 다른 문자로 취급 되며 항상 $(whatever)
호출 에서 jQuery 객체를 다시 가져 왔기 때문에 패턴이 마침내 떠 올랐 습니다. 나는 걸릴 수 있습니다 $(...)
전화를 그냥 몇 가지 문자를 제거하고, 꽤 좋은 이름을 가지고 올 것입니다 :
$
("#email")$
(email)
스트라이크 아웃은 완벽하지는 않지만 아이디어를 얻을 수 있습니다. 일부 문자가 삭제되면 두 줄이 모두 다음과 같이 보입니다.
$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( ... );
Stevo는 옳습니다. 달러 스크립트 기호의 의미와 사용법은 (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 $$$$$"); }
위의 모든 예제가 작동합니다.
사용해보십시오.
$ 문자는 JavaScript 엔진에 특별한 의미가 없습니다. az, AZ, _, 0-9 등과 같은 변수 이름의 또 다른 유효한 문자입니다.
$
JavaScript에서 특별한 의미가 없습니다. 기간.
_
변수 이름의 시작 부분에서 개인 변수를 나타내는 데 종종 사용 되기 때문에 (또는 적어도 개인용으로 유지하기 위해 하나 이상), $
일반 코드 라이브러리에 간단한 별칭 앞에 추가하는 것이 편리합니다.
예를 들어 jQuery를 사용할 때는 변수 $J
대신 (단지 대신 $
) 변수를 사용하고 $P
php.js 등을 사용할 때 선호합니다 .
접두어는 내 정적 변수와 같은 다른 변수와 시각적으로 구별되어 코드가 일부 라이브러리 또는 기타의 일부라는 사실을 깨닫게하고 규칙을 알고 나면 다른 사람들과 충돌하거나 혼동하지 않습니다.
또한 각 라이브러리 호출에 대해 완전히 지정된 이름이 반복되는 것처럼 코드를 복잡하게 만들거나 추가 입력이 필요하지 않습니다.
단일 키의 가능성을 확장하기 위해 수정 자 키가하는 것과 비슷한 것으로 생각합니다.
그러나 이것은 단지 내 자신의 협약입니다.
지난 4 년 동안 경험 한 것처럼 변수를 사용하여 변수가 값 / 객체를 가리키는 지 jQuery 래핑 된 DOM 요소인지 쉽게 식별 할 수 있습니다.
Ex:
var name = 'jQuery';
var lib = {name:'jQuery',version:1.6};
var $dataDiv = $('#myDataDiv');
위의 예에서 변수 "$ dataDiv"가 표시되면이 변수가 jQuery 래핑 된 DOM 요소 (이 경우에는 div 임)를 가리키는 것으로 쉽게 말할 수 있습니다. 또한 $ ($ dataDiv) .append () 대신 $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find ()와 같이 객체를 다시 래핑하지 않고 모든 jQuery 메소드를 호출 할 수 있습니다.
도움이 되길 바랍니다. 마지막으로 이것을 따르는 것이 좋지만 의무 사항은 아니라고 말하고 싶습니다.
${varname}
jQuery 개발자가 jQuery 요소를 보유하고있는 변수를 구별하기 위해 사용하는 명명 규칙입니다.
일반 {varname}
은 텍스트 및 문자열과 같은 일반적인 내용을 저장하는 데 사용됩니다.
${varname}
jQuery에서 반환 된 요소를 보유합니다.
일반 {varname}
을 사용 하여 jQuery 요소를 저장할 수도 있지만 처음에 말했듯이 일반 변수와 구별하여 이해하기가 훨씬 쉽습니다 (일반 변수와 혼동하고 보유하고있는 것을 이해하기 위해 모든 것을 검색한다고 상상해보십시오) .
예를 들면 다음과 같습니다.
var $blah = $(this).parents('.blahblah');
여기서, blah는 리턴 된 jQuery 요소를 저장합니다.
따라서 다른 사람 $blah
이 코드에서를 볼 때 문자열이나 숫자가 아니라 jQuery 요소라는 것을 이해할 것입니다.
$는 일반 변수의 경우 공통 변수와 jquery 변수를 구별하는 데 사용됩니다. FLIPKART에 주문을 한 다음 주문이 문자열 출력을 표시하는 변수 인 경우 "order"로 간단하게 이름이 지정되지만 place order를 클릭하면 객체가 반환되고 해당 객체는 $로 "$로 표시됩니다. 프로그래머가 자바 스크립트 변수와 jquery 변수를 전체 코드에서 스니핑 할 수 있습니다.
달러 기호 ($) 또는 이중 달러 기호 ($$)가 표시되고 프로토 타입 프레임 워크에서 이것이 무엇을 의미하는지 궁금한 경우 다음과 같이 답하십시오.
$$('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'
유효한 JavaScript 식별자 shuold는 문자, 밑줄 (_) 또는 달러 기호 ($)로 시작해야합니다. 후속 문자는 숫자 (0-9) 일 수도 있습니다. JavaScript는 대소 문자를 구분하므로 문자 "A"~ "Z"(대문자) 및 문자 "a"~ "z"(소문자)를 포함합니다.
세부 사항 :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables