【问题标题】:ESLint no-undef on ES6 function with named arguments带有命名参数的 ES6 函数上的 ESLint no-undef
【发布时间】:2019-02-20 01:35:53
【问题描述】:

我有一个这样定义的函数:

const generate = (report={}, buffer=false) => {
  // do stuff
}

注意这两个参数如何具有默认值。

当我调用该函数并命名一个参数时,我得到一个 no-undef ESLint 错误。

generate(buffer = true);

ESLint 表示未定义“缓冲区”。它没有检测到它是一个命名参数。有谁知道如何更改我的 .eslintrc 以说明命名参数。我在网上找不到任何东西。

提前致谢!

【问题讨论】:

  • js中没有命名参数

标签: node.js eslint


【解决方案1】:

您对这段代码的期望在 Javascript 中不存在。

您收到 no-undef ESLint 错误,因为从未声明过 buffer。由于 JS 中没有命名参数,您可以直接调用 generate(true)

虽然这实际上会导致report 等于true 并且buffer 被设置为默认值,您已设置为false

要获得更接近您所寻找的东西,您可以切换变量顺序:

generate(buffer = false, report = {}) 然后调用generate(true) 将导致调用具有参数: buffer = truereport = {}

希望这是有道理的。

进一步阅读,我推荐:http://2ality.com/2011/11/keyword-parameters.html

【讨论】:

  • 感谢阅读材料。你也可以这样写:generate(undefined, true);
  • 是的,你可以。我不喜欢明确使用undefined,但我同意在这种情况下它会产生预期的效果。
猜你喜欢
  • 2021-03-11
  • 2019-11-12
  • 2017-10-08
  • 2019-04-19
  • 2016-12-27
  • 2018-07-13
  • 2020-04-17
  • 2021-04-25
  • 1970-01-01
相关资源
最近更新 更多