javascript - Eloquent Javascript,局部变量是参数?

标签 javascript

看到这个的时候我正在看书

function multiplier(factor) {
  return number => number * factor;
}
  1. 我知道闭包是函数内的函数,可以访问父函数的局部变量,但返回的函数仍被视为闭包吗?
  2. 如果这被视为闭包,则意味着参数也被视为局部变量。这是真的?如果是这样,在所有编程语言中都是如此吗?我看到一些帖子说他们不完全一样。有什么区别?

最佳答案

  1. 虽然这是闭包的示例,但这也是柯里化(Currying)函数的示例。

  2. 是的,函数及其参数和局部变量被添加到调用堆栈中,这在(大多数?)编程语言中都是如此。我不知道有哪一种语言是不正确的,但是可以用其他方式编写,所以我相信有人已经做到了。我会说参数/参数和局部变量之间的主要区别在于函数可以控制局部变量,而参数则由调用它的任何东西控制。您可以在这里看到差异,但它们或多或少是相同的。

// You'll need to actually look in your dev tools to see the result

const test = test => test2 => test2;
console.log("Test:");
console.dir(test);
console.dir(test());
const best = function(best) {
    return function(best2) {
        return best2;
    }
}
console.log("Best:");
console.dir(best);
console.dir(best());

// You'll need to actually look in your dev tools to see the result

关于javascript - Eloquent Javascript,局部变量是参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55604107/

相关文章:

javascript - 将此 javascript 函数转换为 jquery

javascript - 运行 gulp 时出现类型错误。但找不到任何TypeError 是不是Node 和npm 版本有问题?

JavaScript 对象的属性未定义

javascript - 如何使用所选选项动态创建选择

javascript - 如何获取以子字符串开头的所有 elementID

typescript - 开发人员如何将JavaScript文件转换为TypeScript?

javascript - 刷新表信息而不是追加

javascript - 如何验证已填写的输入字段?

javascript - 尝试 `call` 三种方法,但无法与 jQuery map 正常工作

javascript - previousSibling 在控制台中显示两个不同的内容