JavaScriptにはnull
とundefined
があります。変数にundefined
を割り当てる有意義な使用例はありますか?変数に未定義を割り当てる有意義な使用例はありますか?
答えて
はい。
プロパティが値を持っていたし、今はそれが何を持っていないしたいときは、通常、それらの選択肢があります。
削除:
delete obj.prop;
問題:それはvery big performance impactsを持っています。 はで、他にもうまく設計されたJSプログラムで最も大きなパフォーマンスを誇るものです。それを追跡し、パフォーマンスの問題は、(影響が単に配置されていないことに注意して、プロパティを削除するだけでなく、あなたがメソッドを呼び出すときなど、後でオブジェクトの他のプロパティを読み書きどこどこ)ときにそれを使用することはありませんしてください。
をnullに値を設定する:値の予想されるタイプが「オブジェクト」(または時には「文字列」)である場合
obj.prop = null;
これは意味論的意味をなします。 null
(つまりオブジェクトなし)とundefined
(つまり値が設定されていません)の間に意味的な違いがあります。
はNaNに値を設定します。
obj.prop = NaN;
あなたは数字以外のもののためにこれを使用しません(しかし、それは特定のユースケースに応じて、感覚のトンを作ることができます)。
は未定義に値を設定します。
obj.prop = undefined;
これは、他のほとんどのケースでは最良の選択です。また、それはoptions.something === undefined
をチェックすることです、引数または引数のプロパティが設定されているかどうかをテストするために、通常は正しい方法とうまく果たしています。すでに@Denysにより詳細に説明のように
が見える:)
私はthis.x = null
typeof演算xが、私はこのためundefined
を使用せたobject
になります使用している場合。
あなたが唯一の理論的な落とし穴ですundefined
の値を変更することができECMA 5の前に問題が発生しました。
undefined = 'myEx';
function myEx(){
this.x = undefined;
function isXExisting(){
return typeof this.x !== "undefined";
}
function squareX(){
switch(typeof this.x){
case 'undefined': return undefined;
case 'string': return this.x + this.x;
case 'number': return this.x * this.x;
case 'object': return this.x;
default: return undefined;
}
}
function setX(value){
this.x = value;
}
function getX(){
return this.x;
}
function resetX(){
this.setX(undefined);
}
return{
isXExisting: isXExisting,
setX: setX,
getX: getX,
squareX: squareX,
resetX: resetX
}
}
var y = new myEx();
console.log(y.isXExisting(), y.getX(), y.squareX());
y.setX(3);
console.log(y.isXExisting(), y.getX(), y.squareX());
y.setX('xX');
console.log(y.isXExisting(), y.getX(), y.squareX());
y.resetX();
console.log(y.isXExisting(), y.getX(), y.squareX());
なぜ 'undefined'を使用していますか?私は 'ヌル'が価値の欠如を表すのに適していると思う。 – kawty
@kawty我々は '変数typeof'とnull'なので、応答のための' type'が – sabithpocker
object' 'のおかげを持ち'としてnull'なので '上好ましいundefined''応じて作用検索する場合。もう1つの質問ですが、なぜ値をチェックするのに 'typeof'を使いたいのですか? 'this.x === null'で十分ではなく、' null'を使用していますか? – kawty
- 1. PHPUnit - 不明な例外があります(未定義変数)
- 2. 未定義の変数の値を再割り当てするMATLAB関数
- 3. 未定義オブジェクトに値を割り当てる方法は?
- 4. 変数に割り当てられたとき関数が未定義
- 5. グローバルユーザ定義変数にCSVファイルを割り当てる
- 6. エラー:割り当て不可能なモデル式:未定義
- 7. JavaScript:非構造化の割り当てを使用すると、なぜ「未定義」になるのですか?
- 8. 変数を割り当てるときに定義されていないオフセット
- 9. nightwatchカスタムコマンドで値を割り当てた後、変数が未定義に戻ります
- 10. process.env.VARIABLE文字列を割り当てた後に未定義になる
- 11. 未定義インデックス通知及び未定義変数注意
- 12. 未定義のメソッド `relations`割り当てが関連
- 13. 未定義の問題があります!==未定義
- 14. オブジェクトキー割り当てパラメータは未定義のまま返します
- 15. jqueryからの変数の割り当てajax呼び出しは未定義を返します
- 16. 仮定義とメモリ割り当て
- 17. Python-定義中に変数が割り当てられていないコード
- 18. パッシブ値または定数をユーザー定義型に割り当てる
- 19. なぜLaravel 5.2に未定義の変数エラーがありますか?
- 20. 注意:未定義の変数:NUM
- 21. 注意:未定義の変数boxed_layout_width
- 22. 変数に「未定義」というエラーがあり、わかりません
- 23. 例外TypeError:未定義のオブジェクトではありません
- 24. なぜ私の関数は未定義に戻りますか?
- 25. ローカル変数に割り当てられた値がアンダーライン4で未定義になった
- 26. TypeScript定義のクラスにBreeze.Entityを割り当てます。
- 27. Pointer-to-Methodの配列を定義、割り当て、使用する方法は?
- 28. C#未割り当てローカル変数エラー
- 29. 繰り返し割り当てがget_timeに定義されていますか?
- 30. 2D配列割り当てで予期しない "未定義"要素
私はDELETE' 'のパフォーマンスへの影響を知りませんでした。他のユースケースに感謝します。ありがとう! – kawty