2009-10-05 18 views
18

कुछ जावास्क्रिप्ट एपीआई के प्रलेखन कैसे कुछ समारोह आह्वान करने के लिए का एक उदाहरण के रूप में निम्नलिखित के टुकड़े पता चलता है:जावास्क्रिप्ट में '::' (डबल कॉलन) क्या करता है?

<button type="button" onClick="foo.DoIt(72930)">Click</button> 

<button type="button" onClick="foo.DoIt(42342::37438)">Click</button> 

:: स्पष्ट रूप से यहाँ प्रयोग किया जाता है या तो एक या दो तर्क समारोह को पास करने की अनुमति देने के लिए।

:: जावास्क्रिप्ट में क्या करता है?

और फ़ंक्शन कैसे पता चलता है कि एक या दो मान पारित किए गए हैं? यह उन्हें कैसे पढ़ता है?


नज़दीक से देखने पर, उदाहरण

<button type="button" onClick="foo.Bar(72//893)">Click</button> 

<button type="button" onClick="foo.Qux(425;1,34::)">Click</button> 

जैसे अन्य अजीब सामान दिखाने के कम से कम // सिर्फ गलत लग रहा है।

तो मुझे लगता है कि यह कुछ फैंसी नया वाक्यविन्यास नहीं है जिसे मुझे पता नहीं है, लेकिन हो सकता है कि उदाहरण केवल एक स्ट्रिंग तर्क के आसपास उद्धरण गायब हों।

+1

AFAIK, कि लिखने में कोई त्रुटि है। उस उपयोग में डबल-कोलन का कोई मतलब नहीं है। –

+0

क्या आप जावास्क्रिप्ट एपीआई के बारे में हमें और बता सकते हैं .. – Xinus

+0

प्रलेखन के लिए लिंक? –

उत्तर

13

कुछ भी नहीं। यह एक वाक्यविन्यास त्रुटि है।

>>> alert(42342::37438) 
SyntaxError: missing) after argument list 
+3

हाँ, जब तक कि कुछ अजीब कारणों से डेवलपर वास्तव में ऑनक्लिक पर विश्लेषण नहीं कर रहा है 'document.getElementsByTagName ('बटन') [0] .getAttribute ('onclick') 'के साथ विशेषता मान' और उस जानकारी को निकालने, जो एक अवैध ECMAScript अभिव्यक्ति है। –

+1

@ ब्रैन - यह प्रश्न में दिए गए संदर्भ में मान्य नहीं प्रतीत होता है। – Quentin

+0

@ पावेल - नहीं, यह नहीं है। मेरी पिछली टिप्पणी देखें। प्रश्न का संदर्भ देखें। – Quentin

2

आपने किस उदाहरण में देखा? अब तक, जावास्क्रिप्ट में डबल कॉलन ऑपरेटर नहीं है!

डबल कॉलन ने छद्म-वर्गों और छद्म-तत्वों के बीच स्पष्ट अंतर बनाने के लिए CSS3 में छद्म-तत्वों के लिए एकल-कोलन चयनकर्ताओं को प्रतिस्थापित किया। लेकिन यह CSS3 है, जावास्क्रिप्ट नहीं! बिल्कुल नहीं!

+0

यह देखते हुए, ऐसा लगता है कि वह एक jquery चयनकर्ता को देख रहा है और पैरामीटर के चारों ओर उद्धरण छोड़ दिया है। –

+0

शायद। किसी भी मामले में, इस सवाल से मैंने कहीं अधिक ध्यान आकर्षित किया था। –

1

शायद यह एक टाइपो है, और पूरी बात उद्धरणों में होने की उम्मीद है।

7

:: पैरामीटर की संख्या के साथ कुछ लेना देना नहीं है। आप एक सामान्य अल्पविराम के साथ पहले से ही ऐसा कर जावास्क्रिप्ट में कर सकते हैं:

function SomeFunction(param1, param2) { 
    //... 
} 

SomeFunction('oneParam'); // Perfectly legal 

इसके अलावा, Tzury बार Yochay के उत्तर के आधार पर, क्या आप वाकई निम्नलिखित की तरह कुछ पर नहीं देख रहे हैं?

$('this::is all one::parameter'); // jQuery selector 
+0

मुझे लगता है कि आप सही हैं और इसमें उद्धरण गुम हैं। मैं लेखक को एक बग रिपोर्ट जमा करूंगा :) – dtb

0

मैं अनुमान लगा रहा हूँ कि foo.DoIt के लिए पैरामीटर सूची() कोड द्वारा उत्पन्न होता है, और एक मूल्यों खाली था।

2

यह के लिए

<button type="button" onClick="foo.DoIt('72930')">Click</button> 

<button type="button" onClick="foo.DoIt('42342::37438')">Click</button> 
1

लिखने में कोई त्रुटि यह XML (ECMA-357 standard) जो अर्थ होगा डबल कोट्स एक XPath ऑपरेटर हैं के लिए ECMAScript का उपयोग कर किया जा सकता है किया जाना चाहिए।

देखें ECMAScript for XML

150

यह निश्चित रूप से अपने प्रश्न के समय में ऐसा नहीं था, लेकिन अभी :: एक वैध ES7 ऑपरेटर है। यह वास्तव में बांधने के लिए एक शॉर्टकट है।

::foo.bar 

उदाहरण के लिए एक स्पष्टीकरण here देखें

foo.bar.bind(foo) 

के बराबर है:

+1

यदि मैं इसे सही तरीके से पढ़ रहा हूं, तो यह प्रश्न में दिए गए संदर्भ में मान्य नहीं है। प्रश्न में '::' के एलएचएस और आरएचएस नंबर हैं। – Quentin

+24

यह वह जवाब है जिसे मैं देख रहा था जब मैं किस प्रकार के लिए Googled :: मतलब है! धन्यवाद – poshaughnessy

+2

इस उत्तर के पास इस सवाल से कोई लेना देना नहीं है, क्योंकि (1) ईएस 7, जो जून 2016 में प्रकाशित है, में '::' ऑपरेटर नहीं है; (2) '::' ऑपरेटर वर्तमान में केवल एक चरण 0 प्रस्ताव है, जो परिवर्तित या हटाए जाने की अत्यधिक संभावना है; (3) प्रश्न के संदर्भ में, यह वैध '::' ऑपरेटर सिंटैक्स नहीं है, और यहां तक ​​कि सही वाक्यविन्यास किसी भी मौजूदा प्रमुख ब्राउज़रों में काम नहीं करेगा। – rhgb

संबंधित मुद्दे