• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptの変数について)

JavaScriptの変数についての質問

このQ&Aのポイント
  • JavaScriptの変数に関する質問です。詳細なソースコードが提示されており、エラーについて説明があります。
  • 質問内容は2点あります。まず、セミコロンがない場合の理由について疑問を持っています。また、即時関数内で宣言せずに変数を使うことについても解説があります。
  • 最後に、回答を求めています。セミコロンの有無や変数のスコープについての説明を希望しています。

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

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

#1 です。 http://okwave.jp/qa/q7220411.html との兼ね合いを考えると #1 が適切な説明ではなかったので補足します。 自動セミコロン挿入は改行もしくは "}" で区切られ、構文上有り得ない記述が後続する場合に働きます。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.9 var hoge = 1 // "1 var" は有り得ないので改行の後ろにセミコロンを挿入する var foo = 2; alert(hoge); // 1 q7220411 のようにわかりにくい部分もあるので、やはり避けるのが堅実かと思います。

hwbigin
質問者

お礼

そうですねー。おっしゃるとおりとおもいました。 ただ、サンプルコードや他人のコードを見ているとセミコロンのない代入ステートメントを良く見かけるもので 一応理解しておかないとと思いまして。 おかげ様で一応の理解はできたと思います。 大変有難うございました。

その他の回答 (1)

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

var キーワードで変数宣言を行わない場合、グローバル変数として初期化されます。 ちなみに、ECMAScript 5 から導入された Strict Mode では "Uncaught ReferenceError: j is not defined" のエラーとなり、変数の初期化が無効となります。 http://jsfiddle.net/qb5hW/ JavaScript ではセミコロンを自動的に挿入される機構があるため、省略することも可能です。 具体的にはコード文末尾の改行の後ろにセミコロンがあるかのように扱われます。 コード圧縮器との相性が悪いのと可読性を損なう欠点があるのでお勧めはしませんが…。