0

为什么以下行有时会在 chrome 开发控制台中产生消息“未定义不是函数”:

(callbackOrUndefined || function() {})();

思路是如果为真则执行回调,即函数,否则执行空函数。

我不得不将其替换为:

if (callbackOrUndefined !== undefined) callbackOrUndefined();

编辑:我想我不够清楚。它有时似乎将块评估为 undefined(); 我不明白如何以及为什么。

4

2 回答 2

2

那是因为callbackOrUndefined有一个假值,然后选择了 null 函数,当调用它时,它返回undefined.

请注意,undefined即使callbackOrUndefined没有返回定义的值,您也可能会得到...

于 2012-07-06T08:46:35.703 回答
0

我假设callbackOrUndefined没有定义。所以它的值被认为是虚假的。然后OR评估空函数。空函数不返回任何内容。chrome 开发控制台总是打印你执行的任何代码的最后一个返回值。在这种情况下,这是未定义的。

顺便说一句,它不总是返回undefined。为了让它不返回undefinedcallbackOrUndefined需要有一些真实的价值。

于 2012-07-06T08:48:34.147 回答