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

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

w3c 上這樣定義concat():連接兩個(gè)或更多的數(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]] 的運(yùn)算結(jié)果不是一個(gè)數(shù)組啊,怎么能直接使用[].concat(...arr)

------------------------答案分割線-----------------------------
先來(lái)看一個(gè)現(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定義的初衷是用來(lái)拼接兩個(gè)或多個(gè)數(shù)組,當(dāng)然他不僅僅是拼接數(shù)組,你可以理解為他是拼接多個(gè)元素到數(shù)組中,如果他的參數(shù)是數(shù)組,則打散參數(shù)中的數(shù)組,以單個(gè)元素形式拼接到新數(shù)組中

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

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

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

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

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

2018年2月12日 16:57
編輯回答
放開(kāi)她

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

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

還能不能仔細(xì)看文檔了。。

clipboard.png

2018年9月16日 18:05