在chrome / node上(我一般应该是v8),以下给出了错误消息:
未捕获的TypeError:f不可迭代
function f(){}
f(...undefined);
为什么会生成这样的模棱两可的错误消息?恕我直言,这与f
没有关系?
例如在Firefox(spidermonkey)上,我得到一个可以理解的“未定义没有属性”。如果我使用对象(let o = {}; f(...o.p);
),则会得到更准确的“ o.p未定义”。
这可能以前曾被问过,但是我不知道要搜索什么-“函数不可迭代”给出了很多无关的结果。
PS:显然,作为一个有趣的事实,如果将f
设为可迭代,则错误不会消失:f[Symbol.iterator] = function*() {};
。该错误消息似乎是完全错误的。
V8开发人员在这里。这看起来像个错误。请在crbug.com/v8/new处提交错误。