@@ -28,7 +28,7 @@ function add(x, y) {
2828 return x + y;
2929}
3030
31- var numbers = [4 , 38 ];
31+ const numbers = [4 , 38 ];
3232add (... numbers) // 42
3333```
3434
@@ -38,7 +38,7 @@ add(...numbers) // 42
3838
3939``` javascript
4040function f (v , w , x , y , z ) { }
41- var args = [0 , 1 ];
41+ const args = [0 , 1 ];
4242f (- 1 , ... args, 2 , ... [3 ]);
4343```
4444
@@ -74,7 +74,7 @@ f.apply(null, args);
7474function f (x , y , z ) {
7575 // ...
7676}
77- var args = [0 , 1 , 2 ];
77+ let args = [0 , 1 , 2 ];
7878f (... args);
7979```
8080
@@ -102,8 +102,8 @@ var arr2 = [3, 4, 5];
102102Array .prototype .push .apply (arr1, arr2);
103103
104104// ES6 的写法
105- var arr1 = [0 , 1 , 2 ];
106- var arr2 = [3 , 4 , 5 ];
105+ let arr1 = [0 , 1 , 2 ];
106+ let arr2 = [3 , 4 , 5 ];
107107arr1 .push (... arr2);
108108```
109109
@@ -185,8 +185,8 @@ const [first, ...middle, last] = [1, 2, 3, 4, 5];
185185JavaScript 的函数只能返回一个值,如果需要返回多个值,只能返回数组或对象。扩展运算符提供了解决这个问题的一种变通方法。
186186
187187``` javascript
188- var dateFields = readDateFields (database);
189- var d = new Date (... dateFields);
188+ let dateFields = readDateFields (database);
189+ let d = new Date (... dateFields);
190190```
191191
192192上面代码从数据库取出一行数据,通过扩展运算符,直接将其传入构造函数` Date ` 。
@@ -236,8 +236,8 @@ str.split('').reverse().join('')
236236任何 Iterator 接口的对象(参阅 Iterator 一章),都可以用扩展运算符转为真正的数组。
237237
238238``` javascript
239- var nodeList = document .querySelectorAll (' div' );
240- var array = [... nodeList];
239+ let nodeList = document .querySelectorAll (' div' );
240+ let array = [... nodeList];
241241```
242242
243243上面代码中,` querySelectorAll ` 方法返回的是一个` nodeList ` 对象。它不是数组,而是一个类似数组的对象。这时,扩展运算符可以将其转为真正的数组,原因就在于` NodeList ` 对象实现了 Iterator 。
@@ -275,7 +275,7 @@ let arr = [...map.keys()]; // [1, 2, 3]
275275Generator 函数运行后,返回一个遍历器对象,因此也可以使用扩展运算符。
276276
277277``` javascript
278- var go = function * (){
278+ const go = function * (){
279279 yield 1 ;
280280 yield 2 ;
281281 yield 3 ;
@@ -289,7 +289,7 @@ var go = function*(){
289289如果对没有 Iterator 接口的对象,使用扩展运算符,将会报错。
290290
291291``` javascript
292- var obj = {a: 1 , b: 2 };
292+ const obj = {a: 1 , b: 2 };
293293let arr = [... obj]; // TypeError: Cannot spread non-iterable object
294294```
295295
@@ -356,7 +356,7 @@ Array.from([1, 2, 3])
356356``` javascript
357357// arguments对象
358358function foo () {
359- var args = [... arguments ];
359+ const args = [... arguments ];
360360}
361361
362362// NodeList对象
@@ -517,7 +517,7 @@ Array.prototype.copyWithin(target, start = 0, end = this.length)
517517// {0: 1, 3: 1, length: 5}
518518
519519// 将2号位到数组结束,复制到0号位
520- var i32a = new Int32Array ([1 , 2 , 3 , 4 , 5 ]);
520+ let i32a = new Int32Array ([1 , 2 , 3 , 4 , 5 ]);
521521i32a .copyWithin (0 , 2 );
522522// Int32Array [3, 4, 5, 4, 5]
523523
0 commit comments