js中的作用域

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,只不过定义的是常量,不能被修改,不可以重复声明。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值