【问题标题】:How to best mark parameter as ignored如何最好地将参数标记为已忽略
【发布时间】:2013-09-08 00:15:50
【问题描述】:

我正在使用 require.js,我的一个模块需要另一个,但对它的导出不感兴趣(它是一个 jQuery 插件),即在代码中

define(['jquery', 'jquery.mousewheel', 'fabric'], function ($, something, fabric) {
  // ...
}

我对@9​​87654324@ 不感兴趣。当然,我可以将我不感兴趣的结果的依赖项移动到数组的末尾,并在我的函数中省略相应的“尾随”参数,但为了便于阅读,我想保持它们如图所示。这让我想到了这个问题......

在函数定义中标记忽略参数的 JavaScript 习惯用法是什么?

当然我知道我可以使用任何不鼓励我使用变量的名称:

someMethodWithCallback(1, 2, 3, function (dx, notinterested1, notinterested2, point) {
  // ...
});

并且很惊讶以下工作(至少在 Chrome 中)(因为undefined is not a keyword):

someMethodWithCallback(1, 2, 3, function (dx, undefined, undefined, point) {
  // ...
});

当然,在函数内部更改undefined 值可能非常容易出错...

忽略参数值 Perl 有undef,StandardML 有_; JavaScript 有类似的东西,至少在“民间传说”层面?

【问题讨论】:

  • 您也可以使用shim 选项来加载jQuery 插件。 stackoverflow.com/a/10813415/1331430
  • 我知道,我知道。但是,我对他们的出口不感兴趣。
  • shim: { 'jquery.mousewheel': ['jquery'] } 我相信不会创建任何导出。但回到主要问题,我不知道任何语义。我只是正确命名参数而不使用它。这至少说明了为什么参数首先存在。
  • 对,垫片不会创建导出。但是无论如何我都必须在函数中为导出添加一个“占位符”参数(这将被分配未定义的值)。
  • 如果你知道参数永远不会被传递 undefined 或 null,你可以这样做:someMethodWithCallback({}, {}, {}, function ...。请注意,现代 JS 引擎会生成一个空模式警告,这就是为什么这是评论而不是答案。

标签: javascript undefined


【解决方案1】:

我们团队遵循的约定是 Erlang 的约定:在这些变量的名称前加上 _。实际上,它在 jQuery 回调中经常使用:

$.each(someArray, function(_i, el) { ... });

这样你仍然可以看到被忽略的参数的含义,但同时明白它确实被忽略了。

【讨论】:

  • 我试过这种方法,我喜欢它。尤其是与所有忽略名称的相同名称组合时,例如:function (_ign, _ign, _ign, important_param) {...}
  • 注意,使用重复的形式参数会在严格模式下抛出 SyntaxError。
  • 不具体命名变量是否合法。即只使用单个字符_?
  • @JHBonarius _ 是完全有效的标识符,所以是的
猜你喜欢
  • 1970-01-01
  • 2011-09-05
  • 2023-01-18
  • 2017-11-29
  • 1970-01-01
  • 2021-12-25
  • 2019-04-08
  • 1970-01-01
  • 2022-11-17
相关资源
最近更新 更多