gpt4 book ai didi

Javascript 函数表达式用例

转载 作者:行者123 更新时间:2023-11-28 18:07:27 24 4
gpt4 key购买 nike

我最近一直在阅读 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?

最佳答案

代码:

var multFunc1=function(n){return function(n){n*2}}

返回一个函数。因此 multFunc1 表示返回的函数,在本例中:

function(n){n*2}

所以你必须这样调用:

multFunc1(1)(2)

所以基本上返回的函数会记住n的值(传递的参数,我建议您阅读有关闭包的内容)。所以我们可以重写调用,如下所示:

var multFunc1=function(n){return function(x){n*x}}
var multBy2 = multFunc1(2)
var multBy16 = multFunc1(16)

multBy2(4) // 8
multBy16(2) // 32

旁注:multFunc1 的内部函数没有任何 return 语句,因此它始终返回 undefined 作为 @nnnnnn评论中指出

关于Javascript 函数表达式用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com