鉴于
Array.from
采用 可迭代或类似数组的对象 作为第一个参数,为什么它在传递空对象时不会抛出错误,如下所示:
let emptyObject = Array.from( {} )
At iterable 被定义为实现 iterable 协议 或 iterator 协议 的对象。空物体似乎两者都不会:
let emptyObject = {}
console.log(emptyObject[Symbol.iterator])
console.log(emptyObject['next'])
console.log(Array.from(emptyObject))
类似数组的对象具有
length
属性并且可以建立索引 (ref)。空对象没有 length
属性。
let emptyObject = {}
console.log(emptyObject['length'])
console.log(Array.from(emptyObject))
空对象如何符合资格?
似乎它只是为不符合可迭代或类似数组的值创建一个空数组,除了
null
和undefined
:
console.log(Array.from(1));
console.log(Array.from(false));
console.log(Array.from(null));