为了账号安全,请及时绑定邮箱和手机立即绑定

官网上的 “数组连接使用concat()” 概念是不是有问题

官网上的 “数组连接使用concat()” 概念是不是有问题

MMMHUHU 2018-07-13 10:22:58
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?),这在很多语言中是不允许的。


查看完整回答
反对 回复 2018-07-20
  • 2 回答
  • 0 关注
  • 405 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号