3

私は、その範囲が何であるかわからないことに気づきました

var foo='bar', 
baz = 'bar';

は。

明らかにfooはローカルスコープですが、ローカルスコープにするためにbazでvarキーワードが必要ですか、それとも私の例はすでにローカルスコープですか?

4

2 に答える 2

4

それらは両方とも同じスコープになります。

var foo = 'bar', 
    baz = 'bar';

略して:

var foo = 'bar'; 
var baz = 'bar';

したがって、たとえば関数内では、一度だけ宣言した場合でも、との両方がローカル変数になりfooます。bazvar

JSLintのようなツールは、実際にはvarキーワードが1回だけ使用されることを想定しているため、それに準拠する場合は、最初の例を使用する必要があります。

于 2012-07-17T18:26:29.487 に答える
1

確かに、これは非常に興味深い質問です。JavaScriptはボーダーケースでいっぱいです。

このブログ投稿:http ://scribu.net/blog/javascript-var-keyword-for-php-developers.htmlで、著者は「var」キーワードを使用するかどうかの影響の例をいくつか示しています。

長い話を短くします、

  • 宣言されていない変数はグローバルです
  • 宣言された変数はローカルであり、グローバル変数を「オーバーライド」することができます。
于 2012-07-17T18:34:58.233 に答える