js中var ;let ;const区别及作用域概念

作用域概念(Scope) : 变量可以起作用的范围区域

1.1ES5 有两种作用域

a.全局作用域(Global Scope) : 函数外面声明的变量,称之为全局变量。 可以在页面任何地方被访问

全局变量生命周期 : 从页面加载 -> 到页面关闭

b.局部作用域(Local Scope) : 函数里面声明的变量,称之为局部变量。 只能在函数里面被访问

局部变量生命周期 : 从函数开始执行 -> 到函数执行结束

1.2 ES6 新增块级作用域

c.块级作用域(Block Scope) : (1)let/const关键字声明 (2) 大括号里面声明

块级变量声明周期 : 从大括号开始 -> 到大括号结束

什么是块级作用域?

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

什么是函数作用域?

定义在函数中的参数和变量在函数外部是不可见的。

var 与 let const区别

1,变量的挂载不同

var 声明的变量会挂载在 window 上,而 let 和 const 声明的变量不会

let 、const 声明的变量会处于当前作用域中<script>

2,有无变量提升

var 声明变量存在变量提升

let 和 const 不存在变量提升

3,能否重复声明

同一作用域下 var 可以声明同名变量

同一作用域下 let和const不能声明同名变量

 4,是否有块级作用域

ES5 是没有块级作用域概念的,所以var声明自然没有

let 和 const 声明形成块级作用域

 5,const声明注意事项

一旦声明必须赋值,不能用 null 占位

声明一个常量,声明后不能再修改

如果声明的是复合类型数据,可以修改其属性

 6,暂时性死区

只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

如果在声明变量或常量之前使用它, 会引发 ReferenceError, 这在语法上成为 暂存性死区(temporal dead zone,简称 TDZ)。

由于let、const没有变量提升,才产生了暂时性死区

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七岁卖豆芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值