2

ブラウザは同じ名前の複数の関数宣言をどのように処理しますか?ブラウザは、同じ名前の複数の関数宣言をどのように処理しますか?

具体的なテストケースは次のとおりです - 注:サーバースクリプトが同じ名前の関数宣言を複数作成することはできませんが、私は興味がありますので、これは純粋に行動研究のためのものです。

当社のCMSは、単一

<div class="targetMeWithThis"></div> 

function startWidgetFunction() { 
var param1 = $server.Variable1 
var param2 = $server.Variable2 
var param3 = $server.Variable3 
} 

サーバがこのウィジェットの複数のインスタンスを持っているページをレンダリングで構成されている「ウィジェット」の複数のインスタンスを作成しますそれはどのJavaScript関数が使われているかをブラウザがどのように決めるのでしょうか?それぞれ別々のオブジェクト(関数)を実際に作成するブラウザはありますか?

おかげで、この特定の例では J

答えて

2

javascriptでは、(ほとんど)すべてが機能を含むオブジェクトです。つまり、関数定義を上書きすることは変数を上書きすることとまったく同じです。

var myFunc = function() { 
    alert('1'); 
}; 

myFunc(); // alerts '1' 

var myFunc = function() { 
    alert('2'); 
}; 

myFunc(); // alerts '2' 
すでに宣言された変数を宣言すると、それについての警告が表示されます良い練習と多くのコード品質ツール(jslint、jshint、など)ではないことを

http://jsfiddle.net/KgKgf/3/

注意。

+0

確かに。主要なブラウザのどれかがこれを間違って、または予期しない方法で処理するかどうかを知りたいのは非常に興味があります。幸運なことに、CMSが独自のインスタンスをトリミングしているように見えます。 – user1226337

1

function = startWidgetFunction() { 
var param1 = $server.Variable1 
var param2 = $server.Variable2 
var param3 = $server.Variable3 
} 

functionは予約キーワードであるため、ブラウザがエラーをスローします。

異なる変数名を指定すると、(グローバル)変数に値を代入するだけです。この変数は、ウィジェットスクリプトを連続して実行するたびに新しい(同一の)関数で上書きされます。

+0

申し訳ありません。関数名と関数名の間に=記号を付けるつもりはありませんでした。 – user1226337

関連する問題