1.1.let 和块级作用域
在 es5 中, JS 的作用域分为全局作用域和局部作用域, 通常是用函数来区分的, 函数内部属于局部作用域, 在 es6 中新增了块级作用域的概念, 使用 {} 括起来的区域是一个块级作用域
- {
- var a = 10
- }
- // 输出 10
- console.log(a)
如果上述代码中定义变量的时候使用 let, 在外面使用变量 a 就会报错
- {
- let a = 10
- }
- // 以下输出会报错
- console.log(a)
es6 中新增了块级作用域, let 定义的 a 只能在当前的 {} 中使用, 在括号外面会报错
注意: 不能重复去定义一个变量, 例如, 下面这种写法就会报错
- let b = 10
- let b = 20
如上代码, 重复定义一个变量 b 会报错
1.2.const 命令
const 命令和 let 命令的区别是 const 定义的是常量, let 定义的是变量, 常量通常是不会被修改的
- # 定义常量 PI
- const PI = 3.1415926
- console.log(PI)
const 也是在当前块级作用域中有效
- {
- const PI = 3.1415926
- }
- console.log(PI)
如果像上面代码中那样写会报错, const 在块级作用域中定义, 就不能在外面打印, 否则会报错
注意 1: 常量是不能被修改的(存储基本数据类型的时候), 如果试图去修改它, 会报错, 但是如果存储的是对象, 那么引用不可以被改变, 至于对象里面的数据如何变化, 是没有关系的
- const PI = 3.14
- // 这里会报错, 因为存储的是基本数据类型 字符串
- PI = 3.2
- // 这样写是会报错的, 引用关系被改变了
- const BASE = {
- }
- BASE = {
- } // 这里直接赋值一个新对象 引用关系发生变化 会报错
- // 如果只改变对象中的数据, 那是不会报错的, 例如下面这样写
- BASE.a = 123 // 这里只是给对象添加了属性 并没有改变对象引用
注意 2: const 也不能重复定义, 否则会报错
- const PI = 3.14
- const PI = 3.14 // 这里也会报错
注意 3: const 定义常量时必须赋值
- const PI
- PI = 3.14 // 这里也会报错
视频教程地址: http://edu.nodeing.com/course/50 http://edu.nodeing.com/course/50
es6 + 最佳入门实践(1)
来源: http://www.bubuko.com/infodetail-2949045.html