变量作用域:
在函数体内,局部变量优先级高于同名的全局变量,函数参数也是局部变量。
如果在函数体内声明局部变量与函数参数中带有的变量与全局变量重名,全局变量被覆盖。
var scope = '123'; // 全局
function checkscope(){
var scope = '456'; // 局部且同名
return scope; // 返回的是局部变量
}
checkscope(); // 456 局部优先级全局
var scope = '123'; // 全局
function checkscope(){
scope = '456'; // 全局 因为没写var 默认为全局
return scope; // 返回了新的全局变量
}
checkscope(); // 456 全局被修改
声明提前:
var scope = '123';
function f(){
console.log(scope); // undefined 变量提升了 还没执行到var语句声明局部变量
var scope = '456';
console.log(scope); // 456
}