w3c 上这样定义concat():连接两个或更多的数组,并返回结果我们可以这样:var arr = [1,2,[3,4]]
[].concat(...arr) // 输出[1,2,3,4]但是又有以下输出:console.log(...[1,2,[3,4]]) // 输出 1 2 [3, 4]这明显...[1,2,[3,4]] 的运算结果不是一个数组啊,怎么能直接使用[].concat(...arr)呢------------------------答案分割线-----------------------------先来看一个现象:[].concat(1,2) // 输出[1,2][].concat(1,2,[3,4]) //输出[1,2,3,4]真正的官网上给出的解释是: When the concat method is called with zero or more arguments item1, item2, etc., it returns an array containing the array elements of the object followed by the array elements of each argument in order.
2 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
js是一个不那么严谨的语言,w3c所说的是concat的本意,但具体实现时却做了引申和扩展,使得concat不但可以接受数组,还可以接受非数组。
这种例子在js里还有很多。比如parseInt可以接受字符串也可以接受其他类型的参数。按照该函数的本意应该只能接受字符串。再比如js可以允许非可执行代码作为语句,如将一个字符串作为一条语句(是否立马想到了use strict?),这在很多语言中是不允许的。
- 2 回答
- 0 关注
- 405 浏览
添加回答
举报
0/150
提交
取消
