Skip to content

V8引擎迭代器bug一则 #51

@hax

Description

@hax
{ // code 1
	const [a, b, c, ...d] = test()
	print(d[0], d[1])
}
{ // code 2
	const [a, b, c, d, e] = test()
	print(d, e)
}

上述两段代码显然我们期望结果是一样的。

然而

function test() {
	let i = 0
	return {
		[Symbol.iterator]() {
			return {
				next() {
					return {value: ++i, done: i % 3 === 0}
				},
			}
		}
	}
}

结果 V8 前者返回 4, 5,后者返回 undefined, undefined。显然V8的实现有bug。

其他引擎中,SpiderMonkey、JavaScriptCore、Hermes、engine262 的结果是符合预期的(都是undefined, undefined)。XS 和 Chakra 返回的都是 4, 5 好歹是一致的。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions