関数名をパラメーターとして渡す機能は、ほとんどすべての最新のブラウザーで処理されることを知っていますが、古いブラウザーの互換性について疑問に思っています。
- それをサポートした JavaScript/ECMAScript の最初のバージョンは何ですか? JavaScript の最初の日からサポートされていましたか? (それは私を驚かせるでしょう)
- 最初にサポートされた主要なブラウザー (Google Chrome、Firefox、IE、Safari、Opera など) のそれぞれのバージョンは?
関数名をパラメーターとして渡す機能は、ほとんどすべての最新のブラウザーで処理されることを知っていますが、古いブラウザーの互換性について疑問に思っています。
匿名関数を式として使用し、宣言された関数の名前を渡すことは、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
それをサポートした JavaScript/ECMAScript の最初のバージョンは何ですか? JavaScript の最初の日からサポートされていましたか? (それは私を驚かせるでしょう)
1
これはコア言語機能です。
最初にサポートされた主要なブラウザー (Google Chrome、Firefox、IE、Safari、Opera など) のそれぞれのバージョンは?
最も初期の JS をサポートするブラウザーは、これをサポートしています。
私の知る限り、関数は常にオブジェクトであり、オブジェクトは常に引数として渡すことができます。