[英]Array.from() mystery
有人可以解釋一下嗎?
Array.from(undefined);
// Uncaught TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
Array.from(null);
// Uncaught TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
Array.from('Break this up');
// ["B", "r", "e", "a", "k", " ", "t", "h", "i", "s", " ", "u", "p"]
Array.from(123);
// []
為什么最后一個例子返回一個空數組? 123 不是可迭代的。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from(arrayLike [, mapFn [, thisArg]])
arrayLike 要轉換為數組的類數組或可迭代對象。
那是因為它在規范中是如何定義的:
Array.from
在https://tc39.es/ecma262/#sec-array.from 中定義,請參閱步驟 7 Let arrayLike be ! ToObject(items).
Let arrayLike be ! ToObject(items).
ToObject
定義在https://tc39.es/ecma262/#sec-toobject 。 看到它為undefined
和null
,但不為numbers
拋出。Array.from
並看到步驟 8-13 創建並填充數組。 但是來自 number 的ToObject
是一個空(它沒有len
屬性和索引值)對象,因此返回一個空數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.