• ベストアンサー

変数xが定義されていないときだけ

xを1として定義するには if(x==null)x=1; でよいのでしょうか? 同様にa[3]が定義されていないときだけにa[3]を1に定義するには if(a[3]==null)a[3]=1; でよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

確実なのは if (typeof x == "undefined") x = 1; if (typeof a[3] == "undefined") x = 1; です。 typeof 演算子を使わずに直接 == で比較するなら (a[3] == undefined) でも (a[3] == null) でも大して違いはありません。 if(x==null)x=1; だと、変数 x が定義されていないときはエラーになります。

guuman
質問者

お礼

ありがとうございます 確かにエラーになりました

guuman
質問者

補足

<script language="javascript"> if(x==null)var x=9; document.write(x); </script> または <script language="javascript"> if(x==undefined)var x=9; document.write(x); </script> とするとエラーにならないみたいです しかしvarをとるとどちらもエラーになります

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>とするとエラーにならないみたいです >しかしvarをとるとどちらもエラーになります javascriptでは、大域変数の宣言場所は、どこでも良い(使われている後で宣言しても良い)のでそういう動作になります。 例えば、 if(x==undefined)alert("xは未定義"); とだけ書けば、xが宣言されていませんというエラーになりますが、 そのずっと下の方にでも、 var x; と書けばエラーがでなくなるはずです。

guuman
質問者

お礼

ありがとうございます 少し複雑ですね 可読性を考えて素直に最初にvarをつけたいものです

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

if(window.x==undefined)x=1; if(a[3]==undefined)a[3]=1; の方がいいと思います。

guuman
質問者

お礼

ありがとうございます

関連するQ&A