为什么以下行有时会在 chrome 开发控制台中产生消息“未定义不是函数”:
(callbackOrUndefined || function() {})();
思路是如果为真则执行回调,即函数,否则执行空函数。
我不得不将其替换为:
if (callbackOrUndefined !== undefined) callbackOrUndefined();
编辑:我想我不够清楚。它有时似乎将块评估为 undefined(); 我不明白如何以及为什么。
为什么以下行有时会在 chrome 开发控制台中产生消息“未定义不是函数”:
(callbackOrUndefined || function() {})();
思路是如果为真则执行回调,即函数,否则执行空函数。
我不得不将其替换为:
if (callbackOrUndefined !== undefined) callbackOrUndefined();
编辑:我想我不够清楚。它有时似乎将块评估为 undefined(); 我不明白如何以及为什么。
那是因为callbackOrUndefined
有一个假值,然后选择了 null 函数,当调用它时,它返回undefined
.
请注意,undefined
即使callbackOrUndefined
没有返回定义的值,您也可能会得到...
我假设callbackOrUndefined
没有定义。所以它的值被认为是虚假的。然后OR
评估空函数。空函数不返回任何内容。chrome 开发控制台总是打印你执行的任何代码的最后一个返回值。在这种情况下,这是未定义的。
顺便说一句,它不总是返回undefined
。为了让它不返回undefined
,callbackOrUndefined
需要有一些真实的价值。