जावास्क्रिप्ट में डॉलर का चिह्न क्या है, यदि jQuery नहीं


86

मैंने कुछ साल पहले कुछ javascript / jQuery प्रोग्रामिंग की थी, और मैंने फिर से शुरुआत की। इसके बाद सभी jQuery कार्यक्षमता के लिए डॉलर चिह्न का उपयोग किया गया था, और यदि कोई jQuery पुस्तकालय आयात नहीं किया गया था, तो डॉलर चिह्न को परिभाषित नहीं किया गया था।

आज, मैंने फ़ायरफ़ॉक्स की शुरुआत की, पूरी तरह से खाली HTML फ़ाइल में, जिसमें कोई जावास्क्रिप्ट लाइब्रेरी नहीं थी, और फिर भी डॉलर कुछ करने के लिए इशारा करता है। अगर मैं फ़ायरफ़ॉक्स कंसोल को खोलता हूं और मुझे '$' मिलता है "function()"

1) क्या यह सही है कि डॉलर का संकेत नहीं दिया गया था, कुछ साल पहले, या मुझे गलत याद है?

2) अगर jQuery नहीं है, तो डॉलर चिह्न क्या है ?

जवाबों:


122

1) क्या यह सही है कि डॉलर का संकेत नहीं दिया गया था, कुछ साल पहले, या मुझे गलत याद है?

यह सही है और अभी भी सही है।

2) अगर jQuery नहीं है, तो डॉलर चिह्न क्या है?

फ़ायरफ़ॉक्स और क्रोम कार्यान्वित करते हैं $, $$और कई अन्य सहायक आदेशों के रूप में। दोनों के लिए सेट $$है document.querySelectorAll(), और अगर करने के $लिए सेट करेंगेdocument.querySelectorwindow.$ निर्धारित नहीं किया गया।

तो जो आप देख रहे हैं वह वास्तव में मानक जावास्क्रिप्ट नहीं है, लेकिन आपके ब्राउज़र के डेवलपर कंसोल में सहायक है। यह jQuery भी नहीं है (जब तक आप jQuery का उपयोग करने वाले पृष्ठ पर नहीं हैं)। हालाँकि, यह व्यवहार एक के करीब है jQuery, इसके बारे में querySelector(एकल मैचों के लिए) और querySelectorAll(कई मैचों के लिए) आपको jQuery चयनकर्ता के रूप में लगभग एक ही ताकत देता है।


31
ठीक है कि वास्तव में कष्टप्रद है। यह सिर्फ इसे भ्रामक बनाता है क्योंकि ऐसा लगता है कि इसमें जर्करी है लेकिन आप इसे कहीं भी नहीं पा सकते हैं। मुझे लगता है कि एक बार जब आप जानते हैं कि यह चल रहा है, तो यह आसान हो सकता है, लेकिन यह वास्तव में सिर्फ भ्रमित करने वाला और बग को मुखौटा बना सकता है।
माइक नेल्सन

1
यह निश्चित नहीं है कि कब इसे अन्य ब्राउज़रों द्वारा अपनाया गया था, लेकिन मुझे यह IE11 और एज पर भी उपलब्ध है।
isapir

तो कैसे लोगों को पता है अगर यह jquery है? कहते हैं, आपने एक बड़े पुस्तकालय का आयात किया है जिसमें कुछ अन्य परिवादों को शामिल किया गया हो सकता है, आपको पता है कि अगर वहाँ है। कृपया मदद करे।
मंगल ग्रह 2049

2
@ Martian2049 मुझे लगता है कि असली jQuery का जवाब होगा$.fn.jquery
mb21

2
@Gaspacchio यह एक और जवाब होना चाहिए। हालांकि, ध्यान रखें कि इस प्रश्न$ में एक टेम्पलेट शाब्दिक में उपयोग नहीं किया गया था ।
ज़ेटा

11

इसका मतलब सिर्फ अंडरस्कोर की तरह दुभाषिया के लिए कुछ भी नहीं है

ECMAScript विनिर्देश से:

डॉलर चिह्न ($) और अंडरस्कोर (_) की पहचानकर्ता में कहीं भी अनुमति दी जाती है। डॉलर का संकेत केवल यंत्रवत् निर्मित कोड में उपयोग के लिए है।

आप जावास्क्रिप्ट डॉलर साइन ($) भी देख सकते हैं - यह किस लिए है?

कन्वेंशन द्वारा, डॉलर चिह्न ($), अंडरस्कोर (_) और यहां तक ​​कि कुछ ASCII चरित्र को जावास्क्रिप्ट पहचानकर्ता में कहीं भी उपयोग करने की अनुमति है (स्रोत: एक्मा स्क्रिप्ट प्रलेखन (7.6 पहचानकर्ता, ईसीएमए -262, 3 एड।) डॉलर। संकेत केवल यंत्रवत् उत्पन्न कोड में उपयोग के लिए है। इसका मतलब है कि हम अपने इंडेंटिफायर नामों में डॉलर चिह्न ($) का उपयोग नहीं करना चाहते हैं, जब तक कि हम एक रूपरेखा नहीं लिख रहे हैं। निम्नलिखित अनुमत पात्रों की एक सूची है जिसका उपयोग किया जा सकता है। एक पहचानकर्ता नाम में कहीं भी:

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence

संपादित करें: -

वास्तव में डॉलर साइन फंक्शन अधिक या कम डी वास्तविक शॉर्टकट बन गया है document.getElementById()

मेरी बात की पुष्टि करने के लिए इसे देखें :

$ (चयनकर्ता)

दिए गए CSS चयनकर्ता से मिलते हुए एक तत्व देता है। पुराने फायरबग संस्करणों में , यह document.getElementById के बराबर हुआ करता था ।


वह ब्लॉग लिंक अभी मृत है।
विक्टर ज़मानियन

उत्तर का पहला भाग अप्रासंगिक है, दूसरा भाग आधुनिक ब्राउज़रों के संदर्भ में अप्रचलित और गलत है।
user4642212

7

Dollar sign($) असाइन नहीं किया गया था, लेकिन कुछ ब्राउज़र विशेष उपयोग के लिए फ़ंक्शन जोड़ते हैं।

Google Chrome की तरह, यदि आप $कंसोल पर टाइप करते हैं, तो यह वापस आ जाएगा:

function $(selector, [startNode]) { [Command Line API] }

यह फ़ंक्शन Google Chrome डेवलपर टूल के लिए असाइन किया गया है, और डीबग को और आसान बनाते हैं।

यदि आप टाइप करते हैं $('div'), तो यह कुछ इस तरह लौटेगा:

e.fn.e.init[178]

और हर शामिल करें div DOM ऑब्जेक्ट को ।

तत्व का चयन करने के लिए माउस पर दायाँ बटन क्लिक करने के बाद BTW, आप $scopeकंसोल पर टाइप करके कोणीय.जेएस स्कोप को एक्सेप्ट कर सकते हैं।


4

ध्यान दें कि $$यह काफी नहीं है document.querySelectorAll, क्योंकि उस फ़ंक्शन के विपरीत यह वापस नहीं आता है NodeList:

document.querySelectorAll("p") instanceof NodeList // true

$$("p") instanceof NodeList // false

Array.isArray($$("p")) // true

तो $$(selector)वास्तव में अधिक पसंद है Array.from(document.querySelectorAll(selector))। इसका मतलब यह है कि एरे तरीकों mapऔर दोस्तों की तरह , न केवल forEachउपलब्ध हैं, जब उपयोग $$करना वास्तव में काफी उपयोगी है।


1

यह कुछ भी हो सकता है, जैसा $कि एक मान्य चर नाम है, जैसेdollar

से ECMAScript :

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

यह क्या है और यह कहाँ परिभाषित किया गया है यह देखने के लिए सबसे सरल समाधान शायद टाइप करना $()और इस लाइन पर एक ब्रेकपॉइंट डालना होगा


1

बस अन्य उत्तरों को यहाँ पूरा करने के लिए, MooTools भी $एक उपनाम के रूप में उपयोग करता है document.getElementById

यह जाँच करता है कि $क्या लिया गया है और फिर डिफ़ॉल्ट होगा document.id

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