arguments,arguments를 분명히 하다.callee、arguments.caller의 관계와 차이.md
arguments、arguments.callee、arguments.caller의 관계와 차이
고등학교 3학년 강좌를 볼 때(P177) 코드에arguments가 쓰였다.callee는 함수를 자생적으로 호출합니다. 책에서 "실행 중인 함수를 가리키는 바늘로 함수에 대한 귀속 호출을 실현할 수 있습니다."라고 설명했습니다.
이 반복 호출 코드는 다음과 같습니다.
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var num = factorial(10);
console.log(num); // => 3628800
아주 간단한 코드입니다.그래서 자신 은 지식 을 분명히 하기 위해 자신 의 JS 기초 를 강화하기 위해 스스로 문서 를 찾아보았다
삼자의 관계와 차이점:
arguments:
함수를 호출할 때, 자동으로 이 함수 내부에arguments라는 숨겨진 대상을 생성합니다.이 대상은 수조와 유사하지만 수조도 아니다.[] 조작부호를 사용하여 함수 호출 시 전달되는 실참을 얻을 수 있습니다.
arguments 객체는 Array가 아닙니다.그것은 수조와 유사하지만 길이를 제외하고는 수조 속성이 없습니다.맞아, 얘는 대상이야!그리고 그것이 저장하는 것은 실제 함수에 전달되는 매개 변수이다
function obj(){
// instanceof arguments
console.log( 'arguments instanceof Array? ' + (arguments instanceof Array) ); // => false
console.log( 'arguments instanceof Object? ' + (arguments instanceof Object) ); // => true
console.log(arguments); // => [] callee
}
obj();
(function () {
alert(arguments instanceof Array); // => false
alert(typeof(arguments)); // => object
})();
By The Way:
typeof는 일원 연산자입니다. 반환값은 문자열입니다. 이 문자열은 연산수의 데이터 형식을 설명하고 연산수의 데이터 형식을 가져오는 데 사용됩니다.되돌아오는 값은number,boolean,undefined,function,object,string
instanceof는 변수가 대상인지 아닌지를 판단하는 데 사용되며, 반환값은true 또는false입니다
다음에 우리는 위의 코드를 수정하여obj 함수를 호출할 때 매개 변수를 전달하지만obj 함수 자체는 매개 변수가 없다.
function obj(){
console.log( 'arguments instanceof Array? ' + (arguments instanceof Array) );
console.log( 'arguments instanceof Object? ' + (arguments instanceof Object) );
console.log(arguments);
}
// obj
obj('monkey','love',24);
// => [3]
// 0: "monkey"
// 1: "love"
// 2: "24"
그래서 우리는 왜arguments가 함수에 저장된 실제 전달 매개 변수이지 함수가 설명하는 매개 변수가 아니라고 말한다.
함수가 호출될 때만 arguments 대상이 생성되며, 호출되지 않을 때는null입니다.
캐럴러는?
한 함수 A가 다른 함수 B를 호출할 때 호출된 함수 B는 자동으로 콜러 속성을 생성하여 호출된 함수 대상인 함수 A를 가리킨다.함수 A가 현재 호출되지 않으면 caller는null입니다.
function testCaller() {
var caller = testCaller.caller;
alert(caller);
}
function aCaller() {
testCaller();
}
aCaller();
// => function aCaller() {
// testCaller();
// }
콜렉션은?
callee는arguments 대상의 구성원입니다. 값은 '실행 중인 Function 대상' 입니다.첫 번째 데모 코드가 보여준 것처럼.
function aCallee(arg) {
alert(arguments.callee);
}
function aCaller(arg1, arg2) {
aCallee();
}
aCaller();
// => function aCallee(arg) {
// alert(arguments.callee);
// }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.