2011-12-25 10 views
7

मैं "सख्त उपयोग" प्राप्त करने की कोशिश कर रहा हूं; काम करने के लिए निर्देश, और कुछ परेशानी है। निम्न फ़ाइल में फ़ायरफ़ॉक्स 9 (सही ढंग से) पता लगाएगा कि कुछ वारा लाइन 3 पर घोषित नहीं किया गया है, लेकिन यह पता लगाने में विफल रहता है कि 1 को लाइन 1 पर घोषित नहीं किया गया है। मुझे लगता है कि यह मामला क्यों होगा।क्यों "सख्त" (जावास्क्रिप्ट) का उपयोग एक अविकसित चर का पता नहीं लगाता है?

"use strict"; // this will cause the browser to check for errors more aggresively 

someVar = 10; // this DOES get caught // LINE 3 

// debugger; // this will cause FireBug to open at the bottom of the page/window 
     // it will also cause the debugger to stop at this line 

    // Yep, using jQuery & anonymous functions 
$(document).ready(function(){ 
    alert("document is done loading, but not (necessarily) the images!"); 

    $("#btnToClick").click(function() { 

     alert("About to stop"); 
     var aVariable = 1; 
     debugger; // stop here! 
     alert("post stop " + aVariable); 

     // this lacks a "var" declaration: 
     theVar = 10; // LINE 19 // this is NOT getting caught 

     // needs a closing " 
     // alert("hi); 
     console.log("Program is printing information to help the developer debug a problem!"); 
    }); 

}); 

उत्तर

7

आप हैंडलर आह्वान करने के लिए इससे पहले कि त्रुटि फेंक दिया जाता है की जरूरत है। दूसरे शब्दों में, #btnToClick पर क्लिक करें।

उदाहरण बेला: http://jsfiddle.net/X3TQb/

+0

एक sidenote के रूप में, एक संपादक का उपयोग करके जो आपके लिटर के माध्यम से आपके कोड का विश्लेषण करने में सक्षम है, इन त्रुटियों को संपादित करने में समय लगेगा। व्यक्तिगत रूप से, मैं सब्लिमे टेक्स्ट 2 का उपयोग करता हूं जो सब्लिमेलिंटर के साथ संयुक्त है JSHint http://www.jshint.com/ –

+0

पागल द्वारा रिपोर्ट की गई त्रुटियों को हाइलाइट करता है! मैं कसम खाता हूं कि मैंने वास्तव में कई बार कोशिश की और फायरबग से जो कुछ भी हो, उसे कोई त्रुटि नहीं मिली। मैं वापस गया और इसे फिर से कोशिश की और अब मुझे फ़ायरबग कंसोल में त्रुटि की सूचना दी जा रही है (लेकिन केवल क्लिक होने पर)। जेएसलिंट एक पास में इसकी रिपोर्ट करता है (यानी, विधि को लागू करने की प्रतीक्षा किए बिना)। धन्यवाद! – MikeTheTall

+1

आप उत्तर में पार्स समय और रनटाइम त्रुटि रिपोर्टिंग के बीच अंतर को इंगित कर सकते हैं। यहां खेलने पर यह महत्वपूर्ण अवधारणा है। – wewals

1

जावास्क्रिप्ट थोड़े अजीब है जब यह चर गुंजाइश के लिए आता है। यदि आप इस कोड को चलाने से पहले अलग कोड चलाने के लिए थे, तो आप चर घोषित कर सकते थे, और कोई त्रुटि नहीं होगी, और इसी कारण से रनटाइम को छोड़कर गायब चर के लिए त्रुटियां फेंकना मुश्किल है।

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