JavaScript での重複名の関数とオブジェクトの解析

小云云
リリース: 2018-02-01 09:14:00
オリジナル
1551 人が閲覧しました

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
*/
ログイン後にコピー
JSには通常の関数と関数オブジェクトの2種類の関数があります。以下は「関数オブジェクト」です。これは実際に無名関数を宣言し、関数の init メソッドを変数に割り当てます。

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
*/
ログイン後にコピー

関連する推奨事項:

🎜JS の名前変更されたメソッドの連続呼び出しの問題を解決する方法について🎜🎜

以上がJavaScript での重複名の関数とオブジェクトの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート