$('#modalTBMSubmit').on('click', function (e){
e.preventDefault();
在 var x = 5;
function a() {
function b() {
console.log(x);
}
b();
var x = 6;
}
a();
中,输出为console.log(x)
。但如果我换到,
undefined
然后输出为5.
为什么会这样?请解释一下。
答案 0 :(得分:2)
在第一个示例中,局部变量x
被提升到范围的顶部,即声明它的函数。它的工作方式与在顶部声明的方式相同:
var x = 5;
function a() {
var x;
function b() {
console.log(x);
}
b();
x = 6;
}
a();
由于在调用函数b
之前未为局部变量赋值,因此它包含undefined
。