ES6
常用ES6语法
-
var
let
const
区别在js中通常使用var,会发生变量提升,即脚本开始运行时,变量已经存在了,但是没有值,所以会输出undefined。 let不会发生变量提升,这表示在声明它之前,变量是不存在的,这时如果用到它,就会抛出一个错误。
1
2
3
4
5
6
7
8
9
10{
var a
let b
}
console.log(a)
console.log(b)
输出:
undefined
ReferenceError: b is not defined -
var
是函数级作用域,let
是块级作用域1
2
3
4
5
6
7
8
9
10for (let i = 0; i < 10; i++) {
}
console.log(i)
输出: ReferenceError: i is not defined
for (var i = 0; i < 10; i++) {
}
输出: 10 -
let
不允许在相同作用域内,重复声明同一个变量 -
const
声明一个只读的常量,一旦声明,常量的值就不能改变 -
const
命令声明的常量也是不提升,只能在声明的位置后面使用 -
const
声明的常量,也与let一样不可重复声明 -
对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。
const
命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。
解构赋值
-
解构赋值是对赋值运算符的扩展
-
是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
-
在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。
- 数组模型的解构(Array)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37基本
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
可嵌套
let [a, [[b], c]] = [1, [[2], 3]];
// a = 1
// b = 2
// c = 3
可忽略
let [a, , b] = [1, 2, 3];
// a = 1
// b = 3
不完全解构
let [a = 1, b] = [];
// a = 1, b = undefined
let [a, ...b] = [1, 2, 3];
剩余运算符
//a = 1
//b = [2, 3]
字符串等
在数组的解构中,解构的目标若为可遍历对象,皆可进行解构赋值。可遍历对象即实现 Iterator 接口的数据。
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
解构默认值
let [a = 2] = [undefined];
// a = 2
当解构模式有匹配结果,且匹配结果是 undefined 时,会触发默认值作为返回结果。
let [a = 3, b = a] = []; // a = 3, b = 3
let [a = 3, b = a] = [1]; // a = 1, b = 1
let [a = 3, b = a] = [1, 2]; // a = 1, b = 2- 对象模型的解构(Object)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34基本
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
let { baz : foo } = { baz : 'ddd' };
// foo = 'ddd'
可嵌套可忽略
let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, { y }] } = obj;
// x = 'hello'
// y = 'world'
let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, { }] } = obj;
// x = 'hello'
不完全解构
let obj = {p: [{y: 'world'}] };
let {p: [{ y }, x ] } = obj;
// x = undefined
// y = 'world'
剩余运算符
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10
// b = 20
// rest = {c: 30, d: 40}
解构默认值
let {a = 10, b = 5} = {a: 3};
// a = 3; b = 5;
let {a: aa = 10, b: bb = 5} = {a: 3};
// aa = 3; bb = 5;函数
-
箭头函数
箭头函数提供了一种更加简洁的函数书写方式。基本语法是: 参数 => 函数体基本用法:
1
2
3
4
5
6var f = v => v;
//等价于
var f = function(a){
return a;
}
f(1); //1当箭头函数没有参数或者有多个参数,要用 () 括起来。
当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!