2013-05-10 5 views
30

JavaScript関数の先頭に変数を宣言する場合は、それらをnullに設定するか、「未定義」のままにするのがベストですか?もう1つの方法として、以下の各オプションについてどのような状況が必要ですか?JavaScript変数をnullに設定するか、または未定義のままにしますか?

オプションA:

var a = null, 
    b = null; 

オプションB:

var a, 
    b; 
+2

オプション「b」 –

+3

@ Mr.Alien - 同意します。変数値が 'undefined'ではなく' null'であることが実際に重要でない限り、 '= null'バージョンを使う理由はありません。 –

+0

実際、 'var a、b;'は必ず '* undefined' *のままにするとは限りません。以前のIEのバージョンでは、そのコードを 'var a = undefined、b = undefined;'に変更する必要があります。そうしないと、コードにアクセスしようとしたときにエラーが発生します。それは 'if(a && b)'でいくらかの値を持っています)。その場合、unset変数は 'undefined'とは異なります。 – falsarella

答えて

13

彼らは結局定義されていませんので、私は値を割り当てないとき、私は未定義として宣言。

+5

あなたは結局定義されていないので、undefinedを '代入'する必要がありますか? – VivekDev

+1

これは、undefinedを宣言する必要はありませんが、undefinedを宣言した場合、その値をテストするときに意図的に設定したか、実際には決して設定されていないかはわかりません。これは、値がない場合にnullを優先する理由です。 –

0

短い答えは、スタックを通過する方法のために違いがないということです。しかし、スコープ外の変数を扱うときにはより良い状況がいくつかあります。あなたが明示的に変数anullまたはundefinedに正確に設定されていることを確認する必要がある場合

+4

申し訳ありませんが、その答えはまったく意味がありません。スタックとは何の関係もなく、スコープとは関係ありません。 1つのバージョンは変数値を 'null'に設定し、もう1つは' undefined'に設定します。それは*唯一の違いです。あなたが言及したことのいずれかへの接続はありません。 –

+0

@MichaelGearyはい、スマートに聞こえます –

1

あなたがそれを(またはしない)に設定する必要があるだけです。 trueを返すと述べ

if(a === undefined) { 

} 

a == null && a == undefined

if(a === null) { 

} 

は...と同じではありません。

Fiddle

+0

この場合、nullをチェックするのは良くありません。それはjavascriptの "null comparsions"ベストプラクティスを犯すことに違反します。 DOMオブジェクト(http://my.safaribooksonline.com/book/programming/javascript/9781449328092/idot-programming-practices/id2779483)のnullのみと比較する必要があります –

+0

私は同意しません。私たちがしたいのは、変数が実際に 'null'か' undefined'であるかどうかです。これは完全に有効なチェックです。あなたの引用した例では 'null 'と照合するのは悪い考えですが、それはちょうど1つの場合です:) – jterry

30

それは文脈に依存します。

  • "未定義"はこの値が存在しないことを意味します。 typeofは "未定義"を返します

  • "null"は、この値が空の値で存在することを意味します。 typeofを使用して "null"をテストすると、それがオブジェクトであることがわかります。他のケースでは、asp.net mvcのようなバックエンドサーバーに "null"値をシリアル化すると、サーバーは "null"を受け取りますが、 "undefined"をシリアル化すると、サーバーは値を受け取ることはありません。

9

一般に、私は「null」状態を持つことができることがわかっている値にはnullを使用します。例

if(jane.isManager == false){ 
    jane.employees = null 
} 

のためにそれ以外の場合は、まだ定義されていない(したがって、現時点では「使用可能」ではありません)ですその変数や関数場合はを後で設定することになっている、私は通常、それは未定義のままにしておきます。

-12

あなたは一般的に私がnullに定義話すJavascriptを

+8

空の文字列と' null'は非常に異なるものです。 –

1

で宣言NULL変数に'';を使用することができます行われた何も設定がないことを示すために値や未定義を設定し、人間を示しています。

1

私は通常、関数から返されると予想されるものに設定します。

文字列が空の文字列= ''に設定されている場合、オブジェクト= {}および配列= []の場合と同じですが、整数= 0です。

このメソッドを使用すると、null/undefinedをチェックする必要がなくなります。私の関数は、結果にかかわらず文字列/配列/オブジェクトを処理する方法を知っているでしょう。

関連する問題