深入理解JS中的块级作用域

樵夫2021-09-10 16:19

    js中作用域只有一个函数作用域和全局作用域,一个很大的特点就是js中没有块级作用域。函数作用域是比较容易理解的,那么什么是块级作用域呢?

深入理解JS中的块级作用域

    任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。

    理解了块级作用域,来看一下下面的小例子。

console.log(v); //undefined
var v = "world";

    这段代码很好理解,由于变量v在没有赋值前使用了,所以是undefined。其实这里存在着声明的提前。

    当前作用域内的声明都会提升到作用域的最前面,包括变量和函数的声明

    由于js作用域中的声明都会被提升到作用域的最前面,所以,上面的代码相当于:

var v;
console.log(v); //undefined
v = "world"

    这样就能很清晰地理解为什么变量v是undefined的了。  下面我们把变量v放到一个方法中去:

if(true){
  var v = "hello";
}
console.log(v); //hello

    在这里由于js没有块级作用域,所以if方法没有“形成”一个封闭的作用域,并不能够“阻挡”外面的代码获取里面的变量。

    点击图片免费领取课程!

深入理解JS中的块级作用域

    以上就是小编为大家整理发布的“深入理解JS中的块级作用域”一文,更多相关内容尽在开课吧广场Web教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享