>  기사  >  웹 프론트엔드  >  JavaScript에서 중복된 이름을 사용한 함수 및 객체 구문 분석

JavaScript에서 중복된 이름을 사용한 함수 및 객체 구문 분석

小云云
小云云원래의
2018-02-01 09:14:001548검색

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 엔진은 이를 선언과 할당의 두 부분으로 분할합니다. 선언은 맨 위에 배치되고 할당은 원래 위치에 유지됩니다.

- 선언된 변수는 다시 선언되지 않습니다.

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에는 두 가지 종류의 함수가 있습니다. 하나는 일반 함수이고 다른 하나는 함수 개체입니다. 다음은 실제로 익명 함수를 선언한 다음 함수의 init 메서드를 변수에 할당하는 "함수 개체"입니다.

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
*/

관련 권장 사항:

🎜js 이름이 변경된 메서드의 순차적 호출 문제를 해결하는 방법에 대해🎜🎜

위 내용은 JavaScript에서 중복된 이름을 사용한 함수 및 객체 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.