최근 동료가 js에서 함수와 객체의 이름이 같으면 어떻게 될까요?라는 질문을 했습니다. 이 문제는 자세히 논의할 가치가 있으므로 이 글은 주로 자바스크립트에서 중복된 이름을 가진 함수와 객체에 대한 관련 정보를 소개합니다.
머리말
이 글은 자바스크립트에서 중복된 이름을 가진 함수와 객체에 대한 관련 내용을 주로 소개하고 참고와 학습을 위해 공유합니다. 아래에서는 별로 할 말이 없지만 자세한 내용을 살펴보겠습니다. 소개 .
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 엔진은 이를 선언과 할당의 두 부분으로 분할합니다. 선언은 맨 위에 배치되고 할당은 원래 위치에 유지됩니다.
- 선언된 변수는 다시 선언되지 않습니다.
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"
일반 함수를 정의합니다. 즉, 창 변수 아래에 이름이 함수 이름이고 값이 주소인 키를 정의합니다. 기능의. 함수 내부의 이는 창 개체를 가리킵니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!