다음 예제에서 y 값은 1입니까? 나는 자바 함수 및 클로저 이해
(function() {
function foo(x) {
var callNum = 0;
var baz = 3;
return function (y) {
callNum++;
console.log("callNum: " + callNum);
console.log("y: " + y);
console.log("baz: " + baz);
console.log("x: " + x);
console.log(x + y + (++baz));
}
}
var moo = foo(2); // moo is now a closure.
moo(1);
moo(1);
})();
여기 바이올린 출력 로그의 ... 값을보고 일부 로깅을 추가와 y가 할당된다 방법/이해가 안 :
callNum: 1
y: 1
baz: 3
x: 2
7
callNum: 2
y: 1
baz: 4
x: 2
8
질문은 다음과 같아야합니다. "내부적으로 '음매'는 무엇입니까?". 일단 당신이 그것을 얻으면, 그것은'y'가 할당 된 곳에서 꽤 명확합니다;) –
'y'가 1이 아닐 것이라고 왜 기대할 수 있습니까? – tymeJV
'y'는'assigned '가 아니고'foo'가 반환 한 함수'moo'에 전달됩니다. 두 번 모두 '1'을 전달하므로 1이됩니다. –