【JavaScript】变量作用域

背景知识:

  • 编程语言中,作用域控制变量与参数的可见性和生命周期
  • 函数体内,局部变量的优先级高于同名的全局变量
  • 块级作用域:花括号内的每一段代码都具有各自的作用域

1.JavaScript不支持块级作用域
JavaScript的<b>函数作用域</b>:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的

function hello() { 
  for (var i = 0; i < 10; i++) { 
      // doSomething...
  } 
  // 输出10,在支持块级作用域的语言中这里会报错
  console.log(i); 
}

2.声明提前:JavaScript函数里申明的所有变量都被提前至函数体顶部

var scope = “global”;
function test() {
  // 输出undefined,这里scope只是申明,还没有被赋初值
  console.log(scope);     
  // scope在这里被赋初值,但scoop的申明发生在函数体顶部
  var scope = "local";     
  // 输出local
  console.log(scope);     
}```

该函数等价于:

var scope = “global”;
function test() {
var scope;
console.log(scope);
scope = "local";
console.log(scope);
}```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容