最近、同僚が質問しました。js で関数とオブジェクトが同じ名前を持つ場合はどうなりますか?この問題については詳しく説明する必要があるので、この記事では主に JavaScript の名前が重複している関数とオブジェクトに関する情報を紹介します。必要な方は一緒に見てみましょう。
はじめに
この記事では、主に JavaScript の重複した名前を持つ関数とオブジェクトに関する関連コンテンツを紹介し、参考と学習のために共有します。以下では多くのことを説明しません。導入 。
JavaScript では変数の繰り返し宣言が許可されており、後の宣言は前の宣言をオーバーライドします。
var a = 1; var a = 'x'; console.log(a); //输出'x'
JavaScript では関数を繰り返し定義できます。
JavaScript にはオーバーロードの概念がありません。関数は名前に基づいて区別されるだけです。
の後に定義された同名の関数は、パラメータに関係なく、前の関数を上書きします。
function test() { console.log("test"); } test(); //输出 "test arg0 + undefined" function test(arg1) { console.log("test arg" + arguments.length + " + " + arg1); } test(1,2); //输出 "test arg2 + 1"
実際のパラメータの数が仮パラメータよりも少ない場合、残りのデフォルトの割り当ては未定義ですが、渡される実際のパラメータが仮パラメータよりも多い場合は、それらがすべて渡されます。対応関係はありません 仮引数は参照できます(引数を使用して残りの引数を取得できます)
function test(arg1) {
for(var i=0; i<arguments.length; i++) {
console.log(arguments[i]);
}
}
test(1,2); //输出 1 2
これには、変数と関数の事前解析が含まれます:
- 変数宣言は先頭に配置され、関数宣言も先頭に配置され、変数の前に宣言されます。
- 変数の宣言と代入ステートメントが一緒に書かれている場合、JS エンジンは変数を宣言と代入の 2 つの部分に分割します。宣言は先頭に配置され、代入は元の位置に残ります。
- 宣言された変数は再度宣言されません。
var a = 100; function a() { return "function"; } console.log(a); //输出 100 console.log(a()); /* 报错 Uncaught TypeError: a is not a function (anonymous function) @test.html:9 */
りー 以上がJavaScript で重複した名前を持つ関数とオブジェクトの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。var a = 100;
var a = function() {
return "function";
}
console.log(a);
/*
输出
function() {
return "function";
}
*/
console.log(a()); //输出 "function"
通常の関数を定義します。つまり、ウィンドウ変数の下に、名前が関数名で値がアドレスであるキーを定義します機能の。関数内のこれは window オブジェクトを指します。