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 dev consoleは、実行するコードの最後の戻り値を常に出力します。この場合、それは未定義です。

ところで、それは常に戻るのではありませんundefined。それが戻らないためにはundefinedcallbackOrUndefinedいくつかの真実の価値を持っている必要があります。

于 2012-07-06T08:48:34.147 に答える