क्या कोई जावास्क्रिप्ट में डॉलर के संकेत की व्याख्या कर सकता है?


378

प्रश्न में कोड यहाँ है:

var $item = $(this).parent().parent().find('input');

चर नाम में डॉलर चिह्न का उद्देश्य क्या है, क्यों न केवल इसे बाहर रखा जाए?



[ttony21 का उत्तर] [1] यह गलत है कि जावास्क्रिप्ट में कोई प्रकार नहीं हैं, cf. [आधिकारिक प्रलेखन] [२] [१]: stackoverflow.com/questions/846585/… [२]: ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
११'११

यह धागा काफी पुराना है, लेकिन ऐसा लगता है कि मुख्यधारा के ब्राउज़रों ने $, $ $ $ $ $ $ का वैश्विक स्तर पर मानकीकरण किया है। क्या करना है $ बनाम $ $?
निक सोटरोस

कुछ भी नहीं, जब तक कि आप ब्राउज़र के कंसोल में न हों। उदाहरण के लिए क्रोम $ और $$ को शॉर्टकट के रूप में परिभाषित करता है document.querySelectorऔरdocument.querySelectorAll
केविन बी

जवाबों:


381

एक चर में '$' का अर्थ है दुभाषिया के लिए कुछ खास नहीं, बहुत कुछ अंडरस्कोर जैसा।

मैंने जो देखा है, उससे jQuery का उपयोग करने वाले बहुत से लोग (जो कि आपका उदाहरण कोड मेरे जैसा दिखता है) में उपसर्ग चर होते हैं जिनमें एक $ के साथ एक jQuery वस्तु होती है ताकि वे आसानी से पहचाने और मिश्रित न हों, कहते हैं, पूर्णांक ।

$()JQuery में डॉलर साइन फ़ंक्शन एक लाइब्रेरी फ़ंक्शन है जिसे अक्सर उपयोग किया जाता है, इसलिए एक छोटा नाम वांछनीय है।


86
नोट: डिफ़ॉल्ट रूप से, jQuery "jQuery" के शॉर्टकट के रूप में "$" का उपयोग करता है। इसका अन्य जावास्क्रिप्ट पुस्तकालयों के उपयोग पर कुछ प्रभाव है। देखें docs.jquery.com/Using_jQuery_with_Other_Libraries
थीमय्या

17
दूसरे शब्दों में, चर / फ़ंक्शन नामों में $ किसी भी स्वीकार्य प्रतीक के बराबर है। करना var $=function(){}, करना बहुत ही समान है var a=function(){}
F-3000

24
थिमय्या आपकी टिप्पणी "डिफ़ॉल्ट रूप से, jQuery" jQuery "के लिए एक शॉर्टकट के रूप में" $ "का उपयोग करता है" जेक्वेरी की वेबसाइट पर हर पृष्ठ के शीर्ष पर बोल्ड अक्षरों में होना चाहिए, उनके उदाहरणों को बुरी तरह से प्रलेखित किया गया है।
रस्टीएच

जब फ़ंक्शन फ़ंक्शन पैरामीटर के रूप में $ निर्दिष्ट किया जाता है तो क्या होगा? मैं कुछ कोड देख रहा हूँ जैसे jQuery(document).ready(function($){... तब $ का उपयोग फंक्शन कार्यान्वयन के अंदर किया जाता है।
still_dreaming_1

4
@ ThrowawayAccount3Million यह सिर्फ नाम का हिस्सा है। $scope$ के मामले में उस नाम के पात्रों में से एक है। जैसे यदि आप eअंत के अंत में उतार देते $scopeहैं, तो यह काम नहीं करेगा, इसलिए $इच्छाशक्ति लेने से भी काम नहीं चलेगा। इस मामले में कि आपको कुछ दिखाई देता है $( "a" ).addClass( "test" ), डॉलर का चिन्ह जो भी है उसका पूरा नाम है।
still_dreaming_1

49

आपके उदाहरण में $ का नाम के चरित्र होने के अलावा कोई विशेष महत्व नहीं है।

हालाँकि , ECMAScript 6 (ES6) में $ एक टेम्प्लेट लिटरल का प्रतिनिधित्व कर सकता है

var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.

37

$ चिन्ह चर और कार्यों के लिए एक पहचानकर्ता है।

https://web.archive.org/web/20160529121559/http://www.authenticsociety.com/blog/javascript_dollarsign

यह एक स्पष्ट विवरण है कि डॉलर का चिन्ह क्या है।

यहां एक वैकल्पिक विवरण दिया गया है: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html


2
जावास्क्रिप्ट के प्रकार होते हैं; और किसी भी मामले में, डॉलर का चिह्न भी कैसे संबंधित है? यह सिर्फ एक चरित्र है जो जावास्क्रिप्ट में एक कानूनी पहचानकर्ता होने के लिए होता है।
एरिक कप्लून

10
मुझे यकीन नहीं है कि मैं उस लिंक को "स्पष्ट" स्पष्टीकरण कहूंगा। क्या यह वास्तव में समझाने के लिए 6+ पैराग्राफ लेता है कि फ़ंक्शन और चर नामों को परिभाषित करते समय $ केवल एक वैध चरित्र है?
थोड़ा

1
ऐसा लगता है कि पहला लिंक फिर से काम कर रहा है। मुझे @Slight से सहमत होना होगा कि वैकल्पिक स्पष्टीकरण भयानक है।
Sander Garretsen

लिंक में नमूना कोड समझने में काफी आसान है। बहुत बढ़िया!
蔡宗容

32

डॉलर के चिन्ह को एक सामान्य अक्षर या अंडरस्कोर ( _) की तरह माना जाता है । दुभाषिया के लिए इसका कोई विशेष महत्व नहीं है।

कई समान भाषाओं के विपरीत, जावास्क्रिप्ट में पहचानकर्ता (जैसे कार्यात्मक और चर नाम) में न केवल अक्षर, संख्या और अंडरस्कोर हो सकते हैं , बल्कि डॉलर के संकेत भी हो सकते हैं । यहां तक ​​कि उन्हें डॉलर के चिन्ह के साथ शुरू करने की अनुमति है, या केवल एक डॉलर के चिह्न के साथ और कुछ नहीं।

इस प्रकार, $जावास्क्रिप्ट में एक वैध फ़ंक्शन या चर नाम है।

आप एक पहचानकर्ता में डॉलर का चिह्न क्यों चाहते हैं?

वाक्य-विन्यास वास्तव में एक पहचानकर्ता में डॉलर चिह्न के किसी विशेष उपयोग को लागू नहीं करता है, इसलिए यह आपके ऊपर है कि आप इसका उपयोग कैसे करना चाहते हैं। अतीत में, अक्सर एक डॉलर चिह्न के साथ एक पहचानकर्ता को केवल उत्पन्न कोड में शुरू करने की सिफारिश की गई है - अर्थात, कोड हाथ से नहीं बल्कि एक कोड जनरेटर द्वारा बनाया गया है।

हालाँकि, आपके उदाहरण में, ऐसा प्रतीत नहीं होता है। ऐसा लगता है कि किसी ने सिर्फ मनोरंजन के लिए शुरुआत में एक डॉलर का चिह्न लगाया - शायद वे एक PHP प्रोग्रामर थे जिन्होंने इसे आदत से बाहर किया, या कुछ और। PHP में, सभी परिवर्तनशील नामों के सामने एक डॉलर का चिन्ह होना चाहिए।

आजकल दुभाषिया में एक डॉलर के संकेत के लिए एक और सामान्य अर्थ है: jQuery वस्तु, जिसका नाम केवल एक एकल डॉलर चिह्न ( $) में है। यह प्रोटोटाइप जैसे पहले के जावास्क्रिप्ट फ्रेमवर्क से लिया गया एक कन्वेंशन है, और अगर jQuery का उपयोग अन्य ऐसे फ्रेमवर्क के साथ किया जाता है, तो एक नाम क्लैश होगा क्योंकि वे दोनों नाम का उपयोग करेंगे $(jQuery को इसके वैश्विक ऑब्जेक्ट के लिए एक अलग नाम का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है) । जावास्क्रिप्ट में ऐसा कुछ भी विशेष नहीं है जो jQuery को एकल डॉलर के चिन्ह को उसके ऑब्जेक्ट नाम के रूप में उपयोग करने की अनुमति देता है; जैसा कि ऊपर उल्लेख किया गया है, यह केवल एक और मान्य पहचानकर्ता नाम है।


आप इस jQuery वस्तु को var $j = jQuery.noConflict();अब $ j j वस्तु है noconflict कर सकते हैं।
जस्टिन लियू

6

एक्सेलस्क्रिप्ट 2015-2016 में 'टेम्पलेट शाब्दिक' के रूप में डॉलर चिन्ह का उपयोग किया जाता है । उदाहरण:

var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'

यहाँ काम करने का उदाहरण: https://es6console.com/j3lg8xeo/ इस चिन्ह " ` "को नोटिस करें , इसके सामान्य उद्धरण नहीं।

लाइब्रेरी jQuery के साथ काम करते समय U $ भी मिल सकता है ।

रेगुलर एक्सप्रेशंस में $ साइन का मतलब है लाइन का अंत।


4

कोई कारण नहीं। हो सकता है कि जिसने इसे कोडित किया है वह PHP से आया हो। इसका वही प्रभाव पड़ता है, जैसे आपने इसे "_item" या "आइटम" या "आइटम $ $" का नाम दिया था।

एक प्रत्यय के रूप में ("आइटम $" की तरह, "आइटम") का उच्चारण किया जाता है, यह हंगेरियन नोटेशन के समान "फिनिश नोटेशन" नामक एक सम्मेलन के रूप में एक DOM तत्व जैसे एक नमूदार को इंगित कर सकता है ।


1

यहाँ एक अच्छा लघु वीडियो स्पष्टीकरण है: https://www.youtube.com/watch?v=Acm-MD_6934

एक्मा इंटरनेशनल आइडेंटिफ़ायर के अनुसार , कुछ छोटे संशोधनों के साथ यूनिकोड मानक के अध्याय 5 के "पहचानकर्ता" खंड में दिए गए व्याकरण के अनुसार व्याख्या किए गए टोकन हैं । एक पहचानकर्ता एक पहचानकर्ता नाम है जो आरक्षित नहीं है ( देखें 7.6.1 )। यूनिकोड पहचानकर्ता व्याकरण यूनिकोड स्टैंडर्ड द्वारा निर्दिष्ट मानदंड और सूचनात्मक चरित्र श्रेणियों दोनों पर आधारित है। यूनिकोड मानक के संस्करण 3.0 में निर्दिष्ट श्रेणियों के पात्रों को सभी अनुरूप ECMAScript कार्यान्वयन द्वारा उन श्रेणियों में माना जाना चाहिए। यह मानक विशिष्ट वर्ण परिवर्धन निर्दिष्ट करता है:

डॉलर चिह्न ($) और अंडरस्कोर (_) की पहचानकर्ता नाम में कहीं भी करने की अनुमति है

आगे पढ़ने पर पाया जा सकता है: http://www.ecma-international.org/ecma-262/5.1/#sec-7.6

एक्मा इंटरनेशनल एक उद्योग संघ है जिसकी स्थापना 1961 में हुई थी और यह सूचना और संचार प्रौद्योगिकी (आईसीटी) और उपभोक्ता इलेक्ट्रॉनिक्स (सीई) के मानकीकरण के लिए समर्पित है।


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
टार्टनलामा

... @TartanLlama यदि आपने मेरे उत्तर को डाउनग्रेड किया है तो कृपया मेरा अद्यतन उत्तर पढ़ें। धन्यवाद।
नोमिस

मुझे नहीं था! मैंने इसे झंडी दिखा दी।
टार्टनलामा

... ठीक है उस व्यक्ति के लिए जिसने इसे वोट दिया, कृपया समझाएं और मेरे संपादित उत्तर को क्यों पढ़ें। धन्यवाद।
Nomis

5
... @TartanLlama यह साबित करता है (फिर से) कि Stackoverflows अनाम डाउनग्रेड सुविधा टूट गई है। स्वीकृत उत्तरों के साथ पुराने प्रश्नों का उत्तर देना मेरे लिए ठीक है क्योंकि मैं खुद ही अन्य उत्तरों को देखने के लिए उपयोगी हो जाता हूं जब मैं उत्तरों के लिए ब्राउज़ करता हूं।
नोमिस

1

JQuery का उपयोग करते समय, $चर नाम में उपसर्ग के रूप में प्रतीक का उपयोग केवल सम्मेलन द्वारा किया जाता है; यह पूरी तरह से वैकल्पिक है और केवल यह दर्शाने के लिए कार्य करता है कि चर आपके उदाहरण में एक jQuery ऑब्जेक्ट रखता है।

इसका मतलब है कि जब किसी अन्य jQuery फ़ंक्शन को ऑब्जेक्ट पर कॉल करने की आवश्यकता होती है, तो आपको इसे $()फिर से लपेटने की आवश्यकता नहीं होगी । उदाहरण के लिए, इनकी तुलना करें:

// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this 

// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary

$उपसर्ग के साथ पहले से ही jQuery ऑब्जेक्ट्स रखने वाले चर तुरंत पहचानने योग्य होते हैं और कोड अधिक पठनीय होता है, और साथ डबल / मल्टीपल रैपिंग को समाप्त करता है $()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.