web-dev-qa-db-ja.com

Javascriptでvarを使用する場合

たぶんかなり簡単な質問です。

JavaScriptでvarキーワードを使用する場所。それを使用するか、同じ効果を持たないようです(しかし、もちろん私はまだ言語を学んでいます)

例えば、これらは両方とも私には同じように見えます:

(function(){
  var a = "mundo"
  alert("Hola, " + a )
})()

そして

(function(){
  a = "mundo"
  alert("Hola, " + a )
})()

しかし、もちろん、違いが現れるより複雑な例がなければなりません。

53
OscarRyz

varを使用すると、現在のスコープで変数をインスタンス化します。これにより、現在のスコープ内で、上位スコープで同じ名前の変数にアクセスすることもできなくなります。

最初の例では、「a」がインスタンス化され、関数スコープ内で設定されています。 2番目の例では、varがないため、 'a'は関数スコープ外に設定されています

varの場合:

var a = "A"
(function(){
  var a = "B"
  alert(a) //B
})()

alert(a); //A

varなし:

var a = "A";
(function(){
  a = "B"
  alert(a) //B
})()

alert(a) //B
83
Bodman

Varを使用:

var a = 'world';   
myfunction = function(){
  var a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'world';

Varを使用しない:

var a = 'world';   
myfunction = function(){
  a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'mundo'
15
Sam Dufel

Javascriptオブジェクトのスコープを更新する必要があると思います。

「var」キーワードを使用すると、変数が最上位(グローバル)スコープに配置されます。これは、関数が同じ変数を使用する場合、宣言した「var」変数が関数の(非var)変数を上書きすることを意味します... JavaScript Scopes

3
It Grunt

varが関数内で使用されていない場合、JSはそれを上で探します。したがって、異なる関数でsave varsを使用すると、競合する可能性があります。新しい変数を定義する場合は、常に変数を使用する価値があります。

1
Agonych