JavaScript 함수 내부 속성: arguments. callee, arguments. caller, caller
2519 단어 전단
function f() {
for(var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
f(1,"string",true); //
/*
1
string
true
*/
arguments 대상 에는 함수 에 전달 되 는 매개 변수 가 저장 되 어 있 으 며, 괄호 문법 을 통 해 해당 하 는 매개 변 수 를 방문 할 수 있 으 며, arguments 대상 의 length 속성 은 함수 에 전달 되 는 매개 변수의 수량 을 저장 하고 있 으 므 로 함수 에 전달 되 는 매개 변 수 를 간단하게 옮 겨 다 닐 수 있 음 을 알 수 있 습 니 다.
arguments 대상 은 length 속성 외 에 도 callee 라 는 속성 이 있 습 니 다. 이 속성 은 포인터 입 니 다. 이 arguments 대상 을 가 진 함 수 를 가리 키 며 약간 돌아 갈 수 있 습 니 다. 하지만 아래 의 예 를 보면 알 수 있 습 니 다.
function factorial(num) {
if(num <= 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}
function factorial_callee(num) {
if(num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
//
factorial(5); // 120
factorial_callee(5); // 120
상기 두 함 수 는 모두 재 귀적 인 방식 으로 계승 기능 을 실현 합 니 다. 첫 번 째 함 수 는 함수 명 을 통 해 자신 을 호출 하고 두 번 째 함 수 는 arguments. callee 를 통 해 자신 을 호출 합 니 다. 그 중에서 arguments. callee 는 arguments 대상 이 속 한 함수 의 함수 명 에 해당 하 는 것 을 알 수 있 을 것 이 라 고 믿 습 니 다.
JavaScript 함수 에는 또 다른 속성 이 정의 되 어 있 습 니 다. caller, 이 속성 에는 현재 함 수 를 호출 하 는 함수 의 인용 이 저장 되 어 있 습 니 다. 즉, 현재 함 수 를 호출 하 는 함 수 를 가리 키 는 지침 입 니 다. 전역 작용 영역 에서 현재 함 수 를 호출 하 는 경우 값 은 null 입 니 다. 마찬가지 로 우 리 는 하나의 예 를 통 해 어떻게 작 동 하 는 지 알 수 있 습 니 다.
function f() {
console.log(f.caller);
}
//
f();
// null
function outer() {
console.log("outer");
inner();
}
function inner() {
console.log("inner");
console.log(inner.caller);
}
//
outer();
/*
outer
inner
outer() {
console.log("outer");
inner();
}
*/
첫 번 째 는 전역 작용 역 에서 f 함 수 를 호출 하 는 것 이기 때문에 f. caler 의 값 은 null 입 니 다.두 번 째 는 outer 함수 에서 inner 함 수 를 호출 하 는 것 이기 때문에 inner. caller 는 outer 를 가리 키 는 지침 입 니 다.
ECMAScript 5 에 서 는 arguments. caller 속성 도 정 의 했 지만 엄격 하지 않 은 모드 에서 이 속성 은 undefined 입 니 다.또한 엄격 한 모드 에서 arguments. callee 와 arguments. caller 를 방문 하면 오류 가 발생 할 수 있 습 니 다.
이상 은 JavaScript 함수 내부 속성 arguments. callee, arguments. caller, caller 에 대한 간단 한 소개 입 니 다. 이러한 속성 을 어떻게 잘 사용 하여 독특한 역할 을 발휘 하 는 지 에 대해 서 는 독자 가 자신의 지혜 를 발휘 해 야 합 니 다.
수준 에 한계 가 있 으 니 잘못 이 있 으 면 비판 하고 바로잡아 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.