8

私は「厳密な使用」を取得しようとしています。動作するように指示し、少し問題があります。次のファイルでは、FireFox 9はsomeVarが3行目で宣言されていないことを(正しく)検出しますが、theVarが19行目で宣言されていないことを検出できません。

"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!");  
    });

});
4

2 に答える 2

7

エラーがスローされる前に、ハンドラーを呼び出す必要があります。つまり、をクリックします#btnToClick

フィドルの例:http://jsfiddle.net/X3TQb/

于 2011-12-25T17:04:16.507 に答える
1

可変スコープに関しては、Javascriptはちょっと面白いです。このコードを実行する前に別のコードを実行する場合は、変数を宣言することができ、エラーは発生しません。そのため、実行時を除いて、欠落している変数に対してエラーをスローすることは困難です。

于 2011-12-25T17:23:32.317 に答える