console.log()
에 개체를 전달하면 값을 인쇄하기 위해 .toString()
이 호출됩니다. 따라서
,
sum(4)
함수를 반환한다. 그 함수에 대한 후속 호출
sum(4)(5)
또한 함수를 반환합니다. 그런 다음이 console.log()
에 전달, 그리고 콘솔의 결과는
9
는 console
API 꽤 흔들리는 준 표준 주목해야한다, 그리고 그것은 디버깅 지원으로 제작 되었기 때문에 어떤 행동이 있다고 할 수 혼란 스럽다. 이 경우에는 그러나 다른 "도움이되는"재미있는 사업없이 단순히 .toString()
을 호출하는 것처럼 보입니다. 경우, 그러나, 당신은 당신이 (파이어 폭스 적어도 방화범에서) 얻을이
console.log({})
처럼 console.log()
에 개체를 탐색 할 수있는 유용한 인터페이스를 간단하게 빈 개체를 전달할 수 있었다. 어떤 것을 디버깅하는 것이 좋지만, 언어가 어떻게 작동 하는지를 알고 싶다면 그 행동이 혼란 스러울 수 있습니다. 함수가 .valueOf()
방법을 추가하여 너무 숫자 결과를 공개 할 수 있도록 최종 참고로
가 게시 된 코드의 트릭은 연장 될 수있다 :
function sum (a) {
var sum = a;
function f (b) {
sum += b;
return f;
}
f.toString = function() {
return sum;
};
f.valueOf = function() {
return sum;
};
return f;
}
을 당신은, 당신은이 것을 얻을 경우 sum(4)(5)
실행
console.log(2 * sum(4)(5))
여기'console.log (sum (4) (5));'가 있습니다. 'console.log'는 적어도 Chrome에서 함수에 대한 toString 메소드를 호출합니다. –
들여 쓰기가 도움이됩니다. –
예제 코드에서 f.toString()은 결코 실행되지 않는 함수입니다. – bhspencer