4

Three.js のコードを読んでいると、次のコードに違いはありますか?という愚かな疑問が生じました。

frameHeight = frameHeight !== undefined ? frameHeight : 24;

frameHeight = frameHeight || 24;

(frameHeight は関数のパラメータです)

ありがとう

4

4 に答える 4

9

はい、違います。

frameHeight = frameHeight || 24;

frameHeightこれはブール値に強制されます。0, '', false, null,undefinedの場合はNaNfalse にframeHeightなり、デフォルトで 24 になります。

frameHeight = frameHeight !== undefined ? frameHeight : 24;

これは、そうframeHeightでないかどうかを明示的にチェックし、デフォルトで.undefinedundefined24

于 2012-08-15T17:32:17.643 に答える
2

はい、違いがあり、その違いは状況によっては大きくなる可能性があります。

frameHeight = frameHeight || 24

frameHeight24が最初""に、、、、、または0_ null_undefinedNaNfalse

一方:

frameHeight = frameHeight !== undefined ? frameheight : 24

24初期値が正確に である場合にのみ割り当てundefinedます。

したがって、この特定の関数で重要になる可能性があるのは、2 番目のメソッドでは に高さをゼロに設定することを許可することです0が、最初のメソッドではそれを にオーバーライドするためframeHeightできません。024

于 2012-08-15T17:34:08.880 に答える
2
frameHeight = frameHeight || 24;

^ null チェックも行います。0、false、空文字列 ('') NaN、未定義のチェックも行います

frameHeight = frameHeight !== undefined ? frameHeight : 24;

^ undefined をチェックするだけです。

于 2012-08-15T17:31:50.153 に答える
0
frameHeight = frameHeight || 24;

frameHeight= 0で失敗frameHeight= nullで機能

frameHeight = frameHeight !== undefined ? frameHeight : 24;

frameHeight= nullで失敗frameHeight= 0で機能

于 2012-08-15T17:34:30.857 に答える