gpt4 book ai didi

javascript - 了解返回具有变量值的函数的 crockford 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:22 24 4
gpt4 key购买 nike

我刚刚看了 Douglas Crockford 的视频,他给出了以下练习:

write a function, that when passed a variable, returns a function that if called , returns the value of the variable.

所以我写了下面的函数:

function funcky(o) {
return function send(o){ // notice the o in send
return o;
}
}

var x = funcky(3);

console.log(x()); // i get undefined why ??

注意发送中的o。我已经编写 javascript 一段时间了,但我仍然不明白为什么我会得到 undefined ??

康乐福的解决方案如下:

  function funcky(o) {
return function send(){
return o;
}
}

var x = funcky(3);

console.log(x()); // get 3 now .

为什么这个解决方案有效而我的却无效?我没有看到我的解决方案有太大差异,而且我看到的也没有明显错误。有人可以解释一下吗?

最佳答案

send(o){ 中的 o 是您出错的地方。它不是从原始父参数中“继承”o。将它放在该函数声明中就是在该函数的新范围内创建一个新的 o

send 在被调用时没有传递任何东西,它返回它的第一个参数,所以它返回 undefined

你的代码,注释:

function funcky(o) {
return function send(o){ // DECLARES NEW VARIABLE, happens to have same name
return o; //returns the first argument passed to send
}
}

var x = funcky(3); //nothing is passed to the inner function send

console.log(x()); // undefined due to lack of arguments

实际发生的事情的一个更清晰的例子:

function funcky(o) {
return function send(someArgument){
return someArgument; //return o; here would find the correct o, the first arg of funcky
}
}

关于javascript - 了解返回具有变量值的函数的 crockford 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323780/

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