为什么 V8 会给出这个令人困惑的错误信息?
Why does V8 give this confusing error message?
在 chrome/node 上(我想一般是 v8),下面给出了一条错误消息:
Uncaught TypeError: f is not iterable
function f(){}
f(...undefined);
为什么会产生这样一个模棱两可的错误信息?恕我直言,这与 f
?
无关
例如在 firefox (spidermonkey) 上,我得到一个可以理解的 "undefined has no properties"。如果我使用对象 (let o = {}; f(...o.p);
),我会得到更准确的 "o.p is undefined".
以前可能有人问过这个问题,但我不知道要搜索什么 - "function not iterable" 给出了大量不相关的结果。
PS:作为一个有趣的事实,显然,如果 f
可迭代,则错误不会消失:f[Symbol.iterator] = function*() {};
。错误信息似乎完全错误。
这里是 V8 开发人员。这看起来像一个错误。请在 crbug.com/v8/new.
提交错误
在 chrome/node 上(我想一般是 v8),下面给出了一条错误消息:
Uncaught TypeError: f is not iterable
function f(){}
f(...undefined);
为什么会产生这样一个模棱两可的错误信息?恕我直言,这与 f
?
例如在 firefox (spidermonkey) 上,我得到一个可以理解的 "undefined has no properties"。如果我使用对象 (let o = {}; f(...o.p);
),我会得到更准确的 "o.p is undefined".
以前可能有人问过这个问题,但我不知道要搜索什么 - "function not iterable" 给出了大量不相关的结果。
PS:作为一个有趣的事实,显然,如果 f
可迭代,则错误不会消失:f[Symbol.iterator] = function*() {};
。错误信息似乎完全错误。
这里是 V8 开发人员。这看起来像一个错误。请在 crbug.com/v8/new.
提交错误