let, var 和const命令

1. let 与 var之间的区别

  (1) 作用范围: let 作用于所处变量代码块, 而var作用于函数作用域。

       (2) let不存在变量提升

       (3) let存在暂时性死区(只要一进入当前作用域, 所使用的变量就已经存在,但不可获取,只有等到声明那一行,才可获取和使用变量)

  (4) let不允许在相同作用域内,重复声明同一个变量

2. 块级作用域

  a.  作用

    (1) 防止内部变量被外部变量覆盖

    (2) 防止用来计数的循环变量泄漏为全局变量

  b. 实现

    (1) let为javascript实现了块级作用域

    (2) es6允许块级作用域任意嵌套,并且外层作用域不可以读取内层作用域的变量

    (3) 内层块级作用域可以定义与外层块级作用域相同的参数名

3. 函数作用域和函数作用域

  问题来源:函数能不能在块级作用域中声明??

  对于未实现es6的浏览器:

    (1) 对于es5来说,函数只能在顶层作用域和函数中声明,若在块级作用域中声明是非法的。但是浏览器没有遵循这个规定, 在块级声明函数时,函数将被提升到当前函数的头部。

    (2) 而对于es6中,在块级作用域中声明函数时,将函数声明定义为let, 块级作用域不能使用

  对于实现es6的浏览器:

    (1) 允许在块级作用域内声明函数

    (2) 函数声明类似于var, 实现状态t提升

    (3) 函数提升还是提升所在的块级作用域的头部

  块级作用域把多个操作封装在一起,相当于语句,没有返回值。可以用do实现返回值。

4. const 命令

  (1) 基本用法

    const声明的变量,一旦声明了, 就不可以更改,而且声明时,必须初始化。其它用法与let用法一样。

  (2) 本质

    const实际上保证不是变量的值不变,而是变量所指的地址不变。对于基本类型来说, 值保存变量多只的那个内存地址,等于常量。而对于引用类型来说,变量保存是地址,一个指针,至于指向数据结构是否变化无法保证。可以用object.freeze方法冻结对象内部的数据结构。

5. es6声明变量的6种方法

  var , function, let, const, class, import 

 

转载于:https://www.cnblogs.com/learning-skills/p/7528954.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值