js で関数とオブジェクトが同じ名前を持つ場合はどうなりますか?この問題については、主に 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 */
var a = 100; var a = function() { return "function"; } console.log(a); /* 输出 function() { return "function"; } */ console.log(a()); //输出 "function"
通常の関数を定義します。つまり、ウィンドウ変数の下にキーを定義します。その名前は関数名で、その値は関数のアドレスです。関数内のこれは window オブジェクトを指します。
function a() { console.log(this); //输出 window{...} this.a = 1; //即 window.a = 1,此时window下的function a已经被该变量覆盖了。 var a = 5; //下面的这几个变量都是局部变量,仅在花括号范围内有效。 a = 10; var v = "value" return "function"; } console.log(a); //输出 function a {...} console.log(a()); //输出 "function" console.log(a); //输出 1 console.log(v); /* 输出 Uncaught ReferenceError: v is not defined (anonymous function) @ mycolor.html:15 */
以上がJavaScript での重複名の関数とオブジェクトの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。