Oneliner:为什么这个产量未定义不是一个函数?

时间:2012-07-06 08:45:37

标签: javascript

为什么以下行有时会在chrome dev控制台中产生“undefined is not a function”消息:

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

这个想法是执行回调,如果它是真实的,即一个函数,否则执行空函数。

我不得不用以下代替:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我假设callbackOrUndefined未定义。所以它的价值被认为是虚假的。然后OR计算空函数。空函数不会返回任何内容。 chrome dev控制台始终打印您执行的任何代码的最后返回值。在这种情况下,这是未定义的。

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