2012-01-09 9 views
8

ECMAScript 5.1 spec के अनुसार, खंड 12.12, किसी भी कथन को लेबल किया जा सकता है - और एक संक्षिप्त परीक्षण में मेरे ब्राउज़र ने किसी भी कथन से पहले एक लेबल स्वीकार कर लिया। स्पेक में यह भी कहा गया है कि लेबल का उपयोग विशेष रूप से break और continue कथन के साथ किया जाता है, और एक त्वरित परीक्षण से पता चला कि उन बयानों में एक "अपरिभाषित लेबल" त्रुटि फेंकती है, यदि वे संदर्भ वाले लेबल में लूप का उल्लेख नहीं करते हैं।ऐसे लेटर्स के साथ लेबल कैसे उपयोग किए जाते हैं जो लूप नहीं हैं?

तो मेरा सवाल यह है: उन बयानों के लिए लेबल क्या हैं जिनके लिए लूप नहीं हैं? क्या कोई संदर्भ है जिसमें break या continue एक ऐसे लेबल का संदर्भ दे सकता है जो लूप नहीं है?

+2

कोई डुप्ली नहीं, लेकिन एक दिलचस्प, संबंधित, और हालिया प्रश्न - कुछ उत्तरों कुछ हद तक प्रासंगिक हैं: http://stackoverflow.com/questions/8782877/using-colons-in-javascript-variable-names- उदाहरण के लिए- abc – ziesemer

+1

हाहा, हाँ, मैं बस इसे पढ़ रहा था। यही कारण है कि मुझे यह पूछने के लिए प्रेरित किया। –

उत्तर

6

जाहिर तोड़ने और बयान जारी रखने के लिए किसी भी कथन में इस्तेमाल किया जा सकता:

http://docstore.mik.ua/orelly/webprog/jscript/ch06_11.htm

जिसमें कानूनी बन इस तरह मामले बातें:

function show_alert() 
{ 
    label: 
    { 
     break label; 
     alert("Hello! I am an alert box!"); 
    } 
    alert("hi"); 
} 

जब show_alert(), केवल कहा जाता है "हाय" अलर्ट दिखाया गया है।

जहां तक ​​मुझे पता है, यह कोड स्टाइल के अलावा {} कोड ब्लॉक का एकमात्र उपयोग है। (वहाँ है कि यहाँ के बारे में पर एक सवाल था, और कोई पठनीयता के अलावा और कुछ के साथ आने सकता है, लेकिन मैं इसे अभी नहीं मिल सकता है ...)

+0

http://stackoverflow.com/questions/8735841/whats-the-purpose-of-lonely-code-blocks-in-javascript/8735997#8735997 –

+0

यही वह है, धन्यवाद @cwolves – Jeff

+0

ग्रेट उत्तर, धन्यवाद। लेकिन मैं इसे स्वीकार नहीं कर रहा हूँ के रूप में पूरा (अभी तक), के बाद से यह स्पष्ट नहीं होता तुम क्यों गैर ब्लॉक बयान लेबल कर सकते हैं (जैसे 'शुरू: var एक = 1;')। –

0

हाँ आप किसी भी बयान लेबल कर सकते हैं। तुम बस घुंघराले ब्रेसिज़ में बयान डाल करने के लिए है, यानी

{start:var a=1;} 

इस अपरिभाषित लेबल त्रुटि नहीं दिखाएगा की जरूरत है।

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