【发布时间】:2017-06-30 20:45:01
【问题描述】:
这个功能
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]
并且未被此变量声明调用
var arr2 = mapForEach(arr1, function (item) {
return item * 2;
});
登录到控制台时调用
console.log(arr2); // [2,4,6] in the console
为什么这里不需要调用?
console.log(arr2());
我仍然不清楚这与
有何不同function foo () { return 2 === 2 };
日志函数定义
console.log(foo); // function foo() { return 2 === 2 }
在日志函数中调用,记录返回值
console.log(foo()); // true
【问题讨论】:
-
因为它是由该变量声明调用的。为什么你不这么认为?您只是将结果分配给名称
arr2。如果您认为您正在分配一个函数,为什么将其命名为数组? -
我没有命名它,我正在阅读它并尝试学习,除非您天生就精通 Javascript(我不是),否则这个过程必须发生。我认为返回值的分配在内存中不存在,直到执行,现在必须在声明为 arr2() 之后发生,然后在程序执行中同步可用。所以我期待 console.log(arr2) 记录一个函数定义。幸运的是,我们有诸如堆栈溢出之类的东西,我们可以在其中提出我们还没有答案的问题,而不是我们做的问题......?
-
刻薄无助于你。 “你为什么不这样认为”的问题是探索性的,以确定你的误解在哪里,所以我们可以直接解决它们,而不是仅仅指给你看一本书(应该解决你的所有的误解,无论它们是什么,但对于您遇到的特定问题也几乎毫无用处)。
-
我没有回复 “你为什么不这么认为” 而是 “如果你认为你正在分配一个函数,为什么你将它命名为一个数组? " 为什么假设我命名它?如果我给它命名,并且通过将它命名为“数组”暗示我知道我的问题的答案,我为什么要问我的问题?我并不是要刻薄,我只是看到有很多人在这里因为提问而受到抨击。这不就是为了这个吗?当我能区分合法问题与非法问题或适合一本书回答的问题和一个人回答的问题时,我会这样做。
-
你确实把它命名为
var arr2 = ...,这就是我所指的。
标签: javascript invocation