私は "厳密に"使用しようとしています。作業の指示、および少しのトラブルがあります。次のファイルでは、FireFox 9は、someVarが3行目で宣言されていないことを(正しく)検出しますが、19行目でtheVarが宣言されていないことを検出できません。なぜこれが当てはまるのか分かりません。「厳格な」(JavaScript)が宣言されていない変数を検出しないのはなぜですか?
"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!");
});
});
サイドノートとして、リンターを介してコードを解析できるエディターを使用すると、編集時にこれらのエラーが発生します。個人的に、私はSublimeLinterと組み合わせたSublime Text 2を使用して、JSHint http://www.jshint.com/で報告されたエラーを強調表示します。 –
Nuts!私は実際にこれを数回試したことを誓って、Firebugからまったく何のエラーも受けなかった。 私は戻ってきてもう一度試しましたが、今はエラーがFirebugコンソールで報告されています(ただし、クリックされた場合のみ)。 JSLintは、それを1回のパスで報告します(つまり、メソッドが呼び出されるのを待たずに)。 ありがとう! – MikeTheTall
答えに解析時間と実行時エラー報告の違いを指摘することがあります。これがここでの重要なコンセプトです。 – wewals