ES6入门(第一章 let 与 const)

let和const应用

let

  • ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

  • let语句不存在变量提升

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

  • ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }

  • “暂时性死区”也意味着typeof不再是一个百分之百安全的操作。

  • “暂时性死区”也意味着typeof不再是一个百分之百安全的操作。在let定义的变量之前使用typeof判断该变量的类型会导致错误。

  • for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。

  • 不允许重复声明:let不允许在相同作用域内,重复声明同一个变量。

  • let实际上为 JavaScript 新增了块级作用域。

  • ES6 允许块级作用域的任意嵌套。外层作用域无法读取内层作用域的变量。内层作用域可以读取外层作用域的变量(跟函数的闭包实现的块级作用域一样)。内层作用域可以定义外层作用域的同名变量。

  • 块级作用域与函数声明:
  • ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明(浏览器未实现,但是在严格模式下不允许)。

  • ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。ES6 规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用。(浏览器可以不遵守上述规则)

  • 考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。

  • 还有一个需要注意的地方。ES6 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。

const

  • const声明一个只读的常量。一旦声明,常量的值就不能改变。对于const来说,只声明不赋值,就会报错。

  • 其余特性与let声明的变量一样。

转载于:https://www.cnblogs.com/oN-Name/p/6501724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值