source

JavaScript 변수가 달러 기호로 시작하는 이유는 무엇입니까?

bestscript 2022. 11. 12. 08:30

JavaScript 변수가 달러 기호로 시작하는 이유는 무엇입니까?

$ 기호로 시작하는 변수를 가진 JavaScript를 자주 볼 수 있습니다.이러한 방법으로 변수 접두사를 선택하는 경우 또는 이유는 무엇입니까?

(에 대해 묻는 것이 아닙니다.$('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판에서는 $prefixed 변수명을 사용하는 것은 자동 생성된 코드 컨텍스트를 제외하고 사양에 의해 명시적으로 권장되지 않았습니다.

달러 기호($및 밑줄(_)는, 식별자내의 임의의 장소에서 사용할 수 있습니다.달러 기호는 기계적으로 생성된 코드에서만 사용할 수 있습니다.

그러나 다음 버전(현행 제5판)에서는 이 제한이 해제되고 위의 단락이 로 대체되었습니다.

달러 기호($및 밑줄(_)는 IdentifierName 내의 임의의 장소에서 사용할 수 있습니다.

따라서 $ 기호는 변수 이름에 자유롭게 사용할 수 있습니다.일부 프레임워크와 라이브러리에는 기호의 의미에 대한 고유한 규칙이 있습니다. 여기서 설명하는 다른 답변에서 알 수 있습니다.

다른 사람들이 언급했듯이 달러 기호는 기계적으로 생성된 코드에 의해 사용되도록 되어 있습니다.그러나, 그 규약은 널리 알려진 자바스크립트 라이브러리에 의해 깨졌다.JQuery, 프로토타입 및 MS AJAX(일명 AKA Atlas)는 모두 이 문자를 식별자(또는 전체 식별자)에 사용합니다.

즉,$(통역사는 불평하지 않습니다.)문제는 언제 사용하실 건가요?

개인적으로는 사용하지 않지만, 사용할 수 있다고 생각합니다.MS AJAX는 함수를 보다 상세한 콜의 에일리어스라고 하기 위해서 사용하는 것 같습니다.

예를 들어 다음과 같습니다.

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

그것은 합리적인 관례인 것 같다.

AngularJS에서는$접두사는 프레임워크 코드의 식별자에만 사용됩니다.프레임워크 사용자는 자신의 ID에서 이 프레임워크를 사용하지 않도록 지시받습니다.

각진 네임스페이스$그리고.$$

코드와 우발적인 이름 충돌을 방지하기 위해 Angular Prefix는 퍼블릭오브젝트 이름 앞에 다음과 같이 붙입니다.$및 개인 객체 이름$$. 를 사용하지 마십시오.$또는$$접두사를 입력합니다.

출처 : https://docs.angularjs.org/api

저는 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가 아닙니다.fieldDOM 요소에는 의미가 없습니다.하지만 저도 같은 생각을 했어요.

저는 몇 가지 다른 시도를 해봤는데, 그 중 예시와 매우 비슷한 것을 했습니다.

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
}

그건 좀 헷갈리네요!내 코드 중 하나에서emailjQuery 객체입니다.emailElementDOM 요소이지만, 다른 요소에서는emailDOM 요소 및emailJQjQuery 객체입니다.

일관성이 없어서 계속 섞었어요.또한 jQuery 오브젝트와 일치하는 DOM 엘리먼트의 두 가지 다른 이름을 계속 만들어야 하는 번거로움이 있었습니다.게다가.email,emailElement,그리고.emailJQ다른 변주곡도 계속 시도해봤어요.

그리고 공통적인 패턴을 발견했습니다.

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

JavaScript가 처리하므로$단순히 이름에 대한 다른 문자로, 그리고 나는 항상 jQuery 오브젝트를 돌려받았기 때문에$(whatever)드디어 패턴이 떠올랐어요내가 가져갈 수 있는 건$(...)몇 좋은 거예요.

$("#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!
}

두의 다른 그냥 을 쓸 수 요.$ 리리 the그 리그그 the$오브젝트 prefix jQuery를 .

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

또는 다음과 같이 입력합니다.

var $email = $('#email');
// Maybe do some other stuff with $email here
$email.click( ... );

Stevo가 옳습니다.$ 스크립트 기호(Javascript 및 jQuery 플랫폼에서는 사용되지만 PHP에서는 사용되지 않음)의 의미와 사용은 완전히 의미가 있습니다.$는 식별자 이름의 일부로 사용할 수 있는 문자입니다.또한, 달러 기호는 Javascript에서 볼 수 있는 가장 이상한 것이 아닐 수 있습니다.유효한 ID 이름의 예를 다음에 나타냅니다.

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 엔진에 특별한 의미가 없습니다.a-z, A-Z, _, 0-9 등과 같은 변수 이름의 다른 유효한 문자일 뿐입니다.

★★_ 적어도 프라이빗한한 변수)를 때 자주 됩니다.$범용 코드 라이브러리에 내 간단한 별칭을 추가할 때 편리합니다.

를 들어사용할 jQuery를 .$J의)$를합니다.$Pusing etc.htc.htc.htc.htc..htc..

프리픽스는 내 정적 변수와 같은 다른 변수와 시각적으로 구별되도록 하기 때문에 코드가 라이브러리 또는 다른 라이브러리의 일부라는 사실을 알게 되면 다른 변수와 충돌하거나 혼동할 가능성이 낮아집니다.

또한 각 라이브러리 호출에 대해 완전히 지정된 이름이 반복되는 것처럼 코드가 복잡하지 않습니다(또는 추가 입력이 필요함).

나는 그것이 단일 키의 가능성을 넓히기 위해 수식 키가 하는 것과 비슷하다고 생각한다.

하지만 이건 그냥 내 관습일 뿐이야.

${varname}는 jQuery 개발자가 jQuery 요소를 보유하는 변수를 구별하기 위해 사용하는 명명 규칙일 뿐입니다.

★★{varname}텍스트나 문자열 같은 일반적인 것들을 저장하는 데 사용됩니다. ${varname}j에서 합니다.질문하다

플레인 사용 가능{varname}jQuery 요소도 저장할 수 있지만, 처음에 말씀드렸듯이, 이것은 일반 변수와 구별되어 훨씬 이해하기 쉽게 합니다(일반 변수를 혼동하고, jQuery 요소가 무엇을 보유하고 있는지를 이해하기 위해 모든 것을 검색한다고 상상해 보십시오).

예를 들어 다음과 같습니다.

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

여기서 blah는 반환된 jQuery 요소를 저장합니다.

다른 때, 보다, 보다, 보다, 보다, 보다.$blah코드에서는 문자열이나 숫자가 아니라 jQuery 요소라는 것을 알 수 있습니다.

지난 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 메서드를 호출할 수 있습니다.

도움이 됐으면 좋겠네요.그래서 마지막으로 의무는 아니지만 이것을 따르는 것이 좋은 관행이라고 말하고 싶습니다.

식별자 접두사에 사용할 수 있지만 템플릿의 대체 토큰과 같은 생성된 코드에 사용해야 합니다.

각도 사용은 프레임워크에 의해 생성된 특성에 대한 것입니다.ECMA-262 3.0이 제공하는 (지금은 사라짐) 힌트로 판단하고 있는 것 같습니다.

$는 정규 변수의 경우 공통 변수와 jquery 변수를 구분하는 데 사용됩니다.FLIPKART에서 주문을 발행할 수 있습니다.주문이 문자열 출력을 나타내는 변수라면 "order"로 명명됩니다.그러나 플레이스 오더를 클릭하면 오브젝트가 $order로 반환되므로 프로그래머가 코드 전체에서 Javascript 변수와 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'

★★★★
http://www.prototypejs.org/api/utility/dollar-dollarhttpwww.prototypejs.org/api/utility/

javascript 변수와 함께 php 이름 표기법을 사용하는 이유는 다음과 같습니다.입력 검증을 실행할 때 클라이언트 측과 서버 측 모두에서 동일한 알고리즘을 실행하고 싶습니다.유지보수를 간소화하기 위해 코드의 양면을 가능한 한 비슷하게 하고 싶습니다.변수 이름에 달러 기호를 사용하면 이 작업을 더 쉽게 수행할 수 있습니다.

(또한 일부 적절한 도우미 함수는 입력값 검색 래핑, strlen, substr의 비OO 버전 등 코드를 비슷하게 보이게 하는 데 도움이 됩니다.그래도 수동으로 조정해야 합니다.)

유효한 JavaScript 식별자는 문자, 밑줄(_) 또는 달러 기호($)로 시작해야 합니다.후행 문자는 숫자(0-9)로도 사용할 수 있습니다.JavaScript는 대소문자를 구분하므로 문자에는 "A" ~ "Z"(대문자) 및 "a" ~ "z"(소문자)가 포함됩니다.

★★★★★★★★★★★★★★★★★★:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variableshttpsdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Guide/#Variables

언급URL : https://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with-a-dollar-sign