js中的作用域
1.作用域有哪些?
在ES6之前,js中只有全局作用域、函数作用域(局部作用域)这两种,ES6中引入了块作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。
2.块作用域解决了什么问题?
在没有块作用域前,可能会出现如下问题:
1.在if或者for循环中声明的变量会泄露成全局变量
2.内层变量可能会覆盖外层变量
3.可以跨块访问, 不能跨函数访问,可能存在变量提升
块作用出现后:
1.允许块级作用域任意嵌套;
2.外层作用域无法读取内层作用域的变量;
3.内层作用域可以定义外层作用域的同名变量;
4.函数本身的作用域在其所在的块级作用域之内。
3.var、let、const的比较
1.var定义的变量,非块作用域,可以跨块访问,不能块函数访问,可能存在变量提升。
2.let定义的变量,块作用域,只能在块中使用,不能跨块跨函数访问,在定义之前,不能被访问,不存在变量提升。
3.const基本同let,只不过定义的是常量,不能被修改,不可以重复声明。
652

被折叠的 条评论
为什么被折叠?



