Я подозреваю, что это связано с перестановкой переменных и функций. JavaScript приносит все объявления переменных и функций в начало функции, в которой они определены. Дополнительная информация здесь: http://jamesallardice.com/explaining-function-and-variable-hoisting-in-javascript/
Бьюсь об заклад, что Chrome вызывает точку прерывания с переменной, недоступной для области видимости, потому что в функции больше ничего нет. Это работает:
function baz() {
var x = "foo";
function bar() {
console.log(x);
debugger;
};
bar();
}
Как это делает:
function baz() {
var x = "foo";
function bar() {
debugger;
console.log(x);
};
bar();
}
Надеюсь, что и / или ссылка выше помогает. Это мой любимый вид вопросов SO, BTW:)