Three.js のコードを読んでいると、次のコードに違いはありますか?という愚かな疑問が生じました。
frameHeight = frameHeight !== undefined ? frameHeight : 24;
と
frameHeight = frameHeight || 24;
(frameHeight は関数のパラメータです)
ありがとう
Three.js のコードを読んでいると、次のコードに違いはありますか?という愚かな疑問が生じました。
frameHeight = frameHeight !== undefined ? frameHeight : 24;
と
frameHeight = frameHeight || 24;
(frameHeight は関数のパラメータです)
ありがとう
はい、違います。
frameHeight = frameHeight || 24;
frameHeight
これはブール値に強制されます。0
, ''
, false
, null
,undefined
の場合はNaN
false にframeHeight
なり、デフォルトで 24 になります。
frameHeight = frameHeight !== undefined ? frameHeight : 24;
これは、そうframeHeight
でないかどうかを明示的にチェックし、デフォルトで.undefined
undefined
24
はい、違いがあり、その違いは状況によっては大きくなる可能性があります。
frameHeight = frameHeight || 24
frameHeight24
が最初""
に、、、、、または0
_ null
_undefined
NaN
false
一方:
frameHeight = frameHeight !== undefined ? frameheight : 24
24
初期値が正確に である場合にのみ割り当てundefined
ます。
したがって、この特定の関数で重要になる可能性があるのは、2 番目のメソッドでは に高さをゼロに設定することを許可することです0
が、最初のメソッドではそれを にオーバーライドするためframeHeight
できません。0
24
frameHeight = frameHeight || 24;
^ null チェックも行います。0、false、空文字列 ('') NaN、未定義のチェックも行います
frameHeight = frameHeight !== undefined ? frameHeight : 24;
^ undefined をチェックするだけです。
frameHeight = frameHeight || 24;
frameHeight
= 0で失敗frameHeight
= nullで機能
frameHeight = frameHeight !== undefined ? frameHeight : 24;
frameHeight
= nullで失敗frameHeight
= 0で機能