2011-08-24 7 views
17

यदि ब्राउज़र किसी वेब पेज पर जावास्क्रिप्ट को निष्पादित कर रहा है और यह अमान्य जावास्क्रिप्ट (उदा। Somerandomthingy;) का सामना करता है, तो उस बिंदु पर जावास्क्रिप्ट स्टॉप का निष्पादन करता है, या एसिंक ऑपरेशन जारी रहता है। जावास्क्रिप्ट ईवेंट अभी भी काम करते हैं (उदा। क्लिक करें)।क्या अमान्य रेखा का सामना होने पर जावास्क्रिप्ट निष्पादन रोकता है?

उत्तर

20

हां, अतुल्यकालिक वाले को छोड़कर। http://jsfiddle.net/pimvdb/R4dfJ/3/

DIY:

var a = 1, b, c; 

setTimeout(function() { 
    b = 2; 
    console.log('Running', a, b, c); 
}, 1000); 

somerandomthingy; 

c = 3; 

Uncaught ReferenceError: somerandomthingy is not defined

Running 1 2 undefined

तो:

  • a और b
  • c स्थापित किए गए हैं सेट नहीं किया गया
  • समय समाप्त अभी भी
  • होता है

'ऑनक्लिक अभी भी काम करता है' के लिए - ठीक है, अगर हैंडलर कोड में सेट है जो चलाता है (यानी। एक त्रुटि से पहले) यह करता है; यदि इसे त्रुटि कोड के बाद रखा जाता है तो यह हैंडलर को बाध्य नहीं करेगा, इसलिए ईवेंट काम नहीं करेंगे।

+0

तो यह एसिंक ऑपरेशंस को प्रभावित नहीं करना चाहिए। Kewlio। –

+0

एकाधिक फ़ाइलों से बुलाए गए जावास्क्रिप्ट के साथ एक और जटिल सेटअप के बारे में क्या? – Kevin

+2

@ केविन: http://jsfiddle.net/TGBYV/ देखें। मूल रूप से प्रति फ़ाइल आधार पर एक ही चीज़। – pimvdb

0

मुझे लगता है कि निष्पादन बंद हो जाता है। यदि आप टूटने वाले कोड की एक पंक्ति के बाद अलर्ट सेट करते हैं, तो आप अलर्ट तक नहीं पहुंचेंगे, जिससे मुझे विश्वास होता है कि निष्पादन बंद हो जाता है। मुझे यकीन नहीं है कि यह एसिंच XmlHtttpRequests के बारे में भी सच है, हालांकि।

1

यह कुछ हद तक निर्भर करता है कि आप क्या कर रहे हैं। आम तौर पर चीजें निष्पादित करना बंद कर देंगे और, यदि आप कंसोल के साथ एक स्मार्ट ब्राउज़र का उपयोग कर रहे हैं, तो एक त्रुटि संदेश लॉग किया जाएगा (और कभी-कभी ये त्रुटि संदेश सहायक होते हैं, यहां तक ​​कि हमेशा नहीं)।

UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #

enter image description here

कभी कभी, तथापि, सामान बस चुपचाप कोई त्रुटि या चेतावनी के साथ, असफल हो जायेगी खासकर यदि आप jQuery या किसी अन्य लाइब्रेरी का उपयोग कर रहे हैं। मैंने वेबकिट और फ़ायरफ़ॉक्स में कुछ ठीक काम करने का समय बिताया है लेकिन आईई में चुपचाप विफल रहा है, और अपराधी को एक jQuery .append() विधि में पीईबीसीएक बग में ढूंढ लिया है जो कुछ अमान्य HTML को DOM में डालने का प्रयास कर रहा था। यह गड़बड़ कर रहा था क्योंकि बाकी सब कुछ ठीक काम करता था, कोई गलती नहीं, कोई चेतावनी नहीं, कुछ भी नहीं, लेकिन आईई में कि एक समारोह सिर्फ "नहीं" होगा।

2

त्रुटि से पहले कोई कोड निष्पादित नहीं किया गया है।

function inAFunction(){ 
alert("one"); 
x = y; 
alert("two"); 
} 
inAFunction(); 

आप देखेंगे "एक" नहीं बल्कि "दो"

alert("one"); 
x = y; 
alert("two"); 

आप "एक" लेकिन नहीं देखेंगे "दो"

var a = { 
    b : c 
} 
alert("here"); 

आप कुछ भी नहीं देखेंगे।

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