1

関数名をパラメーターとして渡す機能は、ほとんどすべての最新のブラウザーで処理されることを知っていますが、古いブラウザーの互換性について疑問に思っています。

  1. それをサポートした JavaScript/ECMAScript の最初のバージョンは何ですか? JavaScript の最初の日からサポートされていましたか? (それは私を驚かせるでしょう)
  2. 最初にサポートされた主要なブラウザー (Google Chrome、Firefox、IE、Safari、Opera など) のそれぞれのバージョンは?
4

3 に答える 3

0

匿名関数として使用し、宣言された関数の名前を渡すことは、Internet Explorer 6 より前のすべてのJavaScriptをサポートするブラウザーで利用できます。

私が見つけた最初のドキュメントはECMA-262で、これは 1997 年にさかのぼります。

完全なサポートについて話している場合、IE の古いバージョン ( IE8 まででも)は、関数式名前が親スコープで定義され、設定されているように、名前付き関数式で変数リークに悩まされていました。実際には宣言された関数です。

// Assuming old JScript engine
typeof foo; // "undefined", expected, it's not been defined yet
bar; // defined as if hoisted function declaration, unexpected

var foo = function bar() {};
foo; // as expected
bar; // identical to foo, not expected

foo === bar; // false, they're actually different function objects in memory
于 2013-06-29T15:58:38.187 に答える
0

それをサポートした JavaScript/ECMAScript の最初のバージョンは何ですか? JavaScript の最初の日からサポートされていましたか? (それは私を驚かせるでしょう)

1

これはコア言語機能です。

最初にサポートされた主要なブラウザー (Google Chrome、Firefox、IE、Safari、Opera など) のそれぞれのバージョンは?

最も初期の JS をサポートするブラウザーは、これをサポートしています。

于 2013-06-29T15:58:45.257 に答える
0

私の知る限り、関数は常にオブジェクトであり、オブジェクトは常に引数として渡すことができます。

于 2013-06-29T15:53:48.957 に答える