• ベストアンサー

変数宣言の var は必ずつけるものなのでしょうか

・関数の外で変数宣言する場合、「varありなし」で違いはあるでしょうか? ・変数宣言の var は必ずつけるものでしょうか? 理由も教えてください ・コーディング規約等に明記してどちらかに統一する類のものでしょうか? あるいは「暗黙の了解」というか「常識の範囲」の話になるのでしょうか?

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.4

var を付けない変数宣言では Strict Mode 時に SyntaxError になります。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Strict_mode#.E3.83.9F.E3.82.B9.E3.81.8B.E3.82.89.E3.82.A8.E3.83.A9.E3.83.BC.E3.81.B8.E3.81.AE.E5.A4.89.E6.8F.9B var は変数のスコープを明示する為に常につけるべきです。 http://cou929.nu/data/google_javascript_style_guide/#var 複数人での作業ならvar必須の規約で統一します。 常識や暗黙で通じるのは、お互いによく見知っており、途中で人員の変更が起きないことが確定している場合に限定されます。 # Re: re97さん

re97
質問者

お礼

回答&リンク提示ありがとうございました。 大変参考になりましたー

その他の回答 (3)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.3

>・関数の外で変数宣言する場合、「varありなし」で違いはあるでしょうか? ない >・変数宣言の var は必ずつけるものでしょうか? 理由も教えてください つける >・コーディング規約等に明記してどちらかに統一する類のものでしょうか? 統一する。 暗黙の了解、常識の範囲を明文化するために規約を用います。 規約はわかっていない人向けですよ。

re97
質問者

お礼

回答ありがとうございました。 ・関数の外で変数宣言する場合、「varありなし」での違いは「ない」んですね ・大変参考になりましたー

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.2

#1です。もう一つ付け忘れたので・・・(^_^;) インプット変数で value 宣言を省くと妙な現象が起きることがあります。この場合はアドレスが常に参照されますが、たとえばその手続きの中でリカーシブコールを行われ、そのアドレスの値が変るような操作が行なわれるとその後の引数の値が変ってしまうことになります。つまり、その手続き中でインプット変数の値が一定であるという保証がなくなってしまうのです。これは大変危険なことで、デバッグを行なうとき、エラーの発見が大変困難になるという弊害が生じます。ですからインプット変数は必ず value 宣言しておくのが安全です。

re97
質問者

お礼

回答ありがとうございましたー

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.1

var をつける場合とつけない場合には引数を持って入るときの動作に違いがあります。これをつけると書き込まれた内容がアドレスの場合にはそこに格納されている値を、計算式の場合にはそれを計算した結果を引数として持ち込みます。書かないとときにはアドレスのみの記入が可能で、計算式を記入するとエラーになります。ただ、コンパイラーによっては気を利かせてくれう可能性もあります。また、それがアウトプットされる引数ならvar が書かれていると必ずエラーになります。計算式を書かれると格納場所が分らないですからね。value というのは call by value つまり数値を持って手続きに入るということなのでそうなるのです。値を持って出て来るときには不適当な機能です。 value 宣言がないと call by name つまりアドレスが引数になっているということです。

re97
質問者

お礼

回答ありがとうございましたー