>웹 프론트엔드 >JS 튜토리얼 >변수가 function_javascript 기술일 때 주의해야 할 몇 가지 세부 사항에 대한 js 요약

변수가 function_javascript 기술일 때 주의해야 할 몇 가지 세부 사항에 대한 js 요약

WBOY
WBOY원래의
2016-05-16 17:57:481118검색

먼저 간단한 코드를 살펴보겠습니다.

코드 복사 코드는 다음과 같습니다.

var testFun=function ( name,age){
var job='Flash Development';
return new testFun.init(name,age,job)
}
testFun.init= function(name,age,job) ){
return 'name:' name ',age:' age ',job:' job ''
}
alert(testFun('vincent',30; )); //[object Object ]

코드는 매우 간단합니다. testFun 변수는 익명 함수이고 익명 함수는 testFun.init 객체(또한 익명 함수)를 반환합니다. 그러나 일부 초보자의 경우 testFun이 반환된 testFun.init 개체라고 오해하는 경우가 있습니다. 익명 함수 함수(이름, 나이)를 구성하는 과정에서 testFun이 다시 사용되었다고 생각할 수도 있습니다. 이때 testFun은 아직 빌드 중이므로 아직 존재해서는 안 되며 testFun.init도 존재하지 않는데 어떻게 testFun을 사용할 수 있습니까? init는 어떻습니까?

사실 이렇게 생각하면 오해가 있습니다. testFun은 testFun()과 동일합니다. testFun이 반환된 testFun.init 객체라면 코드는 testFun=function이어야 합니다. (이름,나이) {… …}(). 올바른 이해는 다음과 같습니다. testFun은 함수를 할당하면 이미 존재합니다. 함수가 정의되지 않거나 null을 반환하더라도 testFun()이 실행된 후에만 반환됩니다. 값이 정의되지 않았거나 null입니다. 반환 값은 testFun() 실행의 결과입니다. 결과가 반환된 후에는 더 이상 testFun과 관련이 없습니다. 예:
코드 복사 코드는 다음과 같습니다.

var testFun=function() {
return un Defined;
}
var result=testFun();
alert(testFun); // function () {return undefine;}
alert(result); 결과가 testFun과 다릅니다. 더 이상 관계가 없습니다

따라서 testFun에 익명 함수가 할당되면 다른 값이 할당될 때까지 항상 존재합니다. 다음과 같이 간단하게 testFun.init를 이해할 수 있습니다:
testFun.init=function(name,age){}.init=function(name,age.job){… …}
요약하자면, 되돌아보면, testFun은 함수이고 testFun()은 (function(name,age,job){return 'name:' name ',age:' age ',job:' job ''; })()
순서입니다. 이해를 돕기 위해 코드를 다음과 같이 단순화할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var testFun=function(){}
testFun.init=function(){}

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