鍍金池/ 問答/C#  HTML/ 官網(wǎng)上的 “數(shù)組連接使用concat()” 概念是不是有問題

官網(wǎng)上的 “數(shù)組連接使用concat()” 概念是不是有問題

w3c 上這樣定義concat():連接兩個或更多的數(shù)組,并返回結(jié)果

我們可以這樣:

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]] 的運算結(jié)果不是一個數(shù)組啊,怎么能直接使用[].concat(...arr)

------------------------答案分割線-----------------------------
先來看一個現(xiàn)象:

[].concat(1,2) // 輸出[1,2]
[].concat(1,2,[3,4]) //輸出[1,2,3,4]
真正的官網(wǎng)上給出的解釋是:
   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.
回答
編輯回答
瘋子范

concat定義的初衷是用來拼接兩個或多個數(shù)組,當然他不僅僅是拼接數(shù)組,你可以理解為他是拼接多個元素到數(shù)組中,如果他的參數(shù)是數(shù)組,則打散參數(shù)中的數(shù)組,以單個元素形式拼接到新數(shù)組中

[].concat([1,[2]],[3]); //[1, [2], 3]

除了拼接數(shù)組,concat還可以拼接字符串''.concat(1,2,[3,4]); //"123,4"

2017年5月19日 12:00
編輯回答
獨特范

js是一個不那么嚴謹?shù)恼Z言,w3c所說的是concat的本意,但具體實現(xiàn)時卻做了引申和擴展,使得concat不但可以接受數(shù)組,還可以接受非數(shù)組。

這種例子在js里還有很多。比如parseInt可以接受字符串也可以接受其他類型的參數(shù)。按照該函數(shù)的本意應(yīng)該只能接受字符串。再比如js可以允許非可執(zhí)行代碼作為語句,如將一個字符串作為一條語句(是否立馬想到了use strict?),這在很多語言中是不允許的。

2018年2月12日 16:57
編輯回答
放開她

真正的 js 官網(wǎng), 寫得很清楚:
http://www.ecma-international...

2018年7月13日 17:54
編輯回答
舊言

還能不能仔細看文檔了。。

clipboard.png

2018年9月16日 18:05