簡體   English   中英

Array.from() 之謎

[英]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 要轉換為數組的類數組或可迭代對象。

那是因為它在規范中是如何定義的:

  1. Array.fromhttps://tc39.es/ecma262/#sec-array.from 中定義,請參閱步驟 7 Let arrayLike be ! ToObject(items). Let arrayLike be ! ToObject(items).
  2. ToObject定義在https://tc39.es/ecma262/#sec-toobject 看到它為undefinednull ,但不為numbers拋出。
  3. 然后返回到Array.from並看到步驟 8-13 創建並填充數組。 但是來自 number 的ToObject是一個空(它沒有len屬性和索引值)對象,因此返回一個空數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM