为什么我在chrome的控制台测试es6新的语法...+数组
的时候,还要写上console.log
,我现在不是在chrome的console里面了吗?
为什么我在chrome的控制台测试es6新的语法...+数组
的时候,还要写上console.log
,我现在不是在chrome的console里面了吗?
语法错误啊。
...
是数组展开运算符。
你可以用在:
数组
const a = [1, 2];
const b = [a, 3];
函数
const params = [1, 2];
Math.max(...params);
console.log
就是第二种用法。
扩展语法允许一个表达式在期望多个参数(用于函数调用)或多个元素(用于数组字面量)或多个变量(用于解构赋值)的位置扩展。
重点是期望。
所以 ...
是被扩展。
有人把它称为三点运算符。其实,这个运算有两个含义,对应的英文是:rest 和 spread。他们也有区别:
...rest 必须是参数列表的最后一个参数!
...spread 无限制!
console.log(...[1, 2, 3]) == console.log(1, 2, 3)
console.log
支持传多个参数,并顺序输出,所以成功了。
而 let a = ...[1, 2, 3]
等于什么呢? let a = 1, 2, 3
??? 这样明显是不可以的。
...iterable
这种写法本身是没错啦,但是它展开之后相当于是逗号分隔的值列表,所以一般用在数组内或者函数调用的参数内。注意它不能展开当逗号运算符连续的多个值,所以不能直接用于表达式。比如