2011-01-13 20 views
1

名前とスコープが同じ2つの変数を宣言するとどうなりますか?JavaScriptで同じ名前とスコープの2つの変数を宣言するとどうなりますか?

ウェブサイトに小さなポートレットを動的にロードしており、各ポートレットにはJavaScriptモジュールが付いた独自のスクリプトタグがあるので、私は尋ねています。問題は、ユーザーがポートレットを複製できることです。つまり、上記のようなことが起こる可能性があります。

+1

で見ることができます:http://jsfiddle.net/Damien_at_SF/cQHRZ/ –

答えて

6

あなたの例では、どちらも定義されていないので、値はundefinedです。

とにかく、第2のvarは無視されます。あなたが持っていなかったのと同じ結果になります。つまり、fooは新しい値で上書きされます。

だから、あなたがしたかのように同じ結果:

var foo = (function() { 
    alert("foo1"); 
})(); 

foo = (function() { // I'm overwriting the value of "foo" 
    alert("foo2"); 
})(); 

EDIT:変更問題のコード。コードを実行すると結果がより顕著になります。 foo変数の最初のオブジェクトへの参照は、2番目のオブジェクトへの参照に置き換えられます。最初の参照は失われます。 ();

0

最後の変数は、あなたの例で を動作する、最初のVARは `VAR fooが=(関数(){ アラート( "foo1のを")})は無視されます。

foo =(function(){//私は "foo"の値を上書きしています alert( "foo2"); })(); `

関連する問題