ばかげた質問のようですが、ただ興味があります。
num = "hello";
alert(num);
なぜこれが可能なのですか?ここで num 変数を初期化しませんでした。
num = "hello";
それ以外の
var num = "hello";
ばかげた質問のようですが、ただ興味があります。
num = "hello";
alert(num);
なぜこれが可能なのですか?ここで num 変数を初期化しませんでした。
num = "hello";
それ以外の
var num = "hello";
var「この変数を使用できるようにする」ではなく、「この変数をこの関数にスコープする」ことを意味します。
オフのままvarにすると、関数の次のスコープで変数が使用されます。そのスコープに がない場合はvar yourVar、スコープ チェーンがグローバルになり、オブジェクトからぶら下がるまでスコープ チェーンを上に移動し続けwindowます (デフォルト オブジェクトが であるブラウザまたは別の JS 環境を想定window)。
(これは、おそらく使用していないstrict モードで変更されます。)
キーワードを指定しないとvar、変数はグローバル スコープで作成されます (ブラウザの の下window)。
を追加するvarと、変数を現在のスコープに割り当てるだけです。ほとんどの場合、これは関数スコープになります。
一般に、グローバルスコープを汚染せず、同じ名前の複数の変数間の競合を防ぐために、関数スコープを使用することをお勧めします!