8

重複の可能性:
JavaScript 関数の構文説明: function object.myFunction(){..}

最近、次のような (レガシー) JavaScript コードを見たことがあります。

function window.onload(){
  // some code
}

識別子にピリオドを使用できないため、これは有効な JavaScript のようには見えませんが、IE8 では機能するようです。私はそれが同等であると仮定します:

window.onload = function(){}

Chrome と IE9 で同じコードを試してみましたが、どちらも構文例外が発生しました。IE8 のこの「機能」は、置き換える必要がある非標準の関数定義であると考えるのは正しいですか? 問題のコードは IE ブラウザーにのみ送信されるため、これまでこの問題に遭遇したことがないのはおそらくそのためです。

4

2 に答える 2

2

最近のブラウザーの Javascript については、通常ECMAScriptを参照できますが、明らかに、これは ECMAScript では許可されていません。

関数定義に関する ECMAScript 仕様:

プロダクション FunctionDeclaration : function Identifier ( FormalParameterListopt ){ FunctionBody } [...]

現在の変数オブジェクト (10.1.3 で指定) のプロパティを Identifier という名前で作成します。

SO 有効な名前(「window.onload」が関数の名前であると誰かが考える場合に備えてwindow.window.onload)

于 2012-10-08T15:25:34.910 に答える
0

次の構文を使用して、新しい関数を定義できます。

function myFunc(args)
{
  ...
}

window.onload関数はブラウザによって定義され、である可能性がありますnull。ピリオドは、onload値がオブジェクトのメンバーであることを意味しwindowます。次の構文は関数を取り、それをonloadメンバーの値に割り当てます。

window.onload = function()
{
  ...
};

これは代入ステートメントであるため、末尾のセミコロンを忘れないでください。

于 2012-10-08T15:35:16.303 に答える