js变量作用域详解。

变量作用域:

在函数体内,局部变量优先级高于同名的全局变量,函数参数也是局部变量。

如果在函数体内声明局部变量与函数参数中带有的变量与全局变量重名,全局变量被覆盖。

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
}

猜你喜欢

转载自blog.csdn.net/weixin_44164824/article/details/89035544