【发布时间】:2017-07-08 11:46:15
【问题描述】:
我最近一直在阅读javascript中的函数表达式和声明,并参考了很多关于此的在线文章。我也看到了很多关于这个话题的讨论。在学习的过程中,我给自己一个挑战,我无法清楚地解释。 我可以请 SO 专家帮助我在这里获得一些见解吗?
这是问题场景 -
场景 1:
>var multFunc=function(n){var a=2; return n*a;}
>multFunc(6)
12
我了解这种情况,结果是我所期望的 (12)。
场景 2:
>var multFunc1=function(n){return function(n){n*2}}
>multFunc1(6)
function (n){n*2}
我不明白第二种情况。为什么它不返回 12? 有人可以帮我理解吗? 我已经检查了这个链接-Javascript Function Expressions,这个链接JavaScript Nested function 昨天我也确实问了一个类似的问题,但我想我没有完全掌握这个概念(正如 T.J 亲切地解释的那样) - Trying a closure the wrong way?
【问题讨论】:
-
multFunc1返回一个函数,因此您必须执行multFunc1()(6)才能获得12。 -
进一步了解@4castle 所说的,注意传递给
multFunc1的参数没有被使用,并且显示的内部函数总是返回undefined(因为它没有'没有return声明)。 -
@4castle ..调用 multFunc1()(6) 实际上返回未定义。其实我已经试过了
标签: javascript