情况1:
[JavaScript] 纯文本查看 复制代码 var a = 20; //在函数外声明并赋值,第一个a是全局变量
function fn() {
var a = 10; //在函数内部使用var声明并赋值,第二个a是局部变量
console.log(a); //优先调用在函数内部的局部变量a的值10
}
fn(); //10
console.log(a); //因为没有提升问题,直接输出全局变量a的值20
//结果是 10 20
情况2:
[JavaScript] 纯文本查看 复制代码 var a = 20; //在函数外声明并赋值,第一个a是全局变量
function fn() {
a = 10; //在函数内部没有使用var声明,那么在外面找到var关键词,然后在fn()函数内做赋值操作,第二个a是全局变量
console.log(a); //优先调用在函数内部的局部变量a,但是在函数内没有找到局部的,那么直接去函数外找全局的a,10
}
fn(); //10
console.log(a); //因为没有提升问题,直接输出全局变量a的值10
//结果是 10 10
情况3:
[JavaScript] 纯文本查看 复制代码 var a = 20; //在函数外声明并赋值,第一个a是全局变量
function fn() {
console.log(a); //优先调用在函数内部的局部变量a,但是在函数内只有a的声明,在调用前无复制,所以是undefined
var a = 10; //在函数内部没有使用var声明,那么在外面找到var关键词,然后在fn()函数内做赋值操作,第二个a是全局变量
}
fn();
console.log(a); //因为没有提升问题,直接输出全局变量a的值2
|