Почему "use strict" (JavaScript) не обнаруживает необъявленную переменную?
Я пытаюсь получить" use strict"; директива для работы и немного проблем. В следующем файле 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!");
});
});
2 ответов
необходимо вызвать обработчик до возникновения ошибки. Другими словами, нажмите #btnToClick
.
пример скрипки:http://jsfiddle.net/X3TQb/
Javascript забавно, когда дело доходит до переменной области. Если бы вы должны были запустить другой код перед запуском этого кода, Вы могли бы объявить переменные, и не было бы никакой ошибки, и по этой причине трудно выбросить ошибки для отсутствующих переменных, кроме как во время выполнения.