함수 표현식을 로깅하면 호출을하지 않고 함수를 실행하는 이유는 무엇입니까?
function mapForEach(arr, fn) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr.push(
fn(arr[i])
)
};
return newArr;
}
var arr1 = [1, 2, 3];
가
mapForEach(arr1, function (item) {
return item * 2;
}); // [2,4,6]
의해 호출 콘솔
console.log(arr2); // [2,4,6] in the console
,536,913에 기록 할 때 호출이 변수 선언 아직
var arr2 = mapForEach(arr1, function (item) {
return item * 2;
});
호출되지이 함수
여기에 호출이 필요하지 않은 이유는 무엇입니까? 이 로그 함수 호출
function foo() { return 2 === 2 };
로그 함수 정의
console.log(foo); // function foo() { return 2 === 2 }
어떻게 다른지
console.log(arr2());
내가 아직 명확하지 않다, 로그 값
console.log(foo()); // true
*이 변수 선언에 의해 * 호출되기 때문에. 왜 다르게 생각하니? 결과를'arr2'라는 이름에 할당하는 것입니다. 함수를 할당한다고 생각한다면 왜 배열로 지었습니까? – jonrsharpe
이름을 밝히지 않았고, 배우고 배우려고합니다. Javascript에 대한 완벽한 지식을 가지고 태어나지 않는 한 일어날 수있는 과정입니다 (나는 그렇지 않았습니다). 나는 반환 값의 할당이 arr2()와 같은 선언 이후에 이제는 일어날 때까지 메모리에 존재하지 않는다고 생각했다. arr2()는 동 기적으로 프로그램 실행시 줄 아래로 사용할 수있다. 그래서 나는 console.log (arr2)가 함수 정의를 기록 할 것으로 예상했다. 다행스럽게도 우리는 스택 오버플로와 같은 것들을 가지고 있습니다. 여기서 우리는 우리가하는 질문과는 대조적으로, 우리가 아직 대답하지 않은 질문을 할 수 있습니다 ...? – nSideOut
그것은 당신이 snarky되는 데 도움이되지 않습니다. "왜 다르게 생각하니?"라는 질문은 당신의 오해가 어디에 놓여 있는지를 밝히기 위해 탐색 적입니다. 그래서 당신이 책을 읽도록 지시하는 대신에 직접적으로 그 문제를 해결할 수 있습니다 (당신의 오해, 그러나 당신이 가지고있는 특정한 문제점을 위해 또한 거의 쓸모 없 일반이다). – Amadan