JavaScript 中未使用指示函数参数的标准约定
Standard conventions for indicating a function argument is unused in JavaScript
是否有任何标准方法可以在 JavaScript 中将函数参数标记为未使用,类似于在 Ruby 中使用下划线开始方法参数?
我们有一个示例可以使用,这在 jQuery 的 $.each
中很常见,您在其中编写的代码不需要索引,只需要值,在迭代回调中($.each
相对于Array#forEach
落后):
$.each(objectOrArrayLikeThing, function(_, value) { }
// Use value here
});
使用 _
是我见过的最接近标准的方法,是的,但我也看到了很多其他方法——无论如何都给它起一个反映其目的的名字(index
), 称之为 unused
, 等等
如果你需要忽略多个参数,你不能重复同一个标识符(它是disallowed in strict mode,这应该是每个人的默认值,也是模块和class
构造中的默认值) , 所以你做了 _0
和 _1
或 _
和 __
等
使用支持解构的浏览器可以做到:
function ({}, {}, value) {
// console.log(value)
}
这有点简洁,因为它避免了多个参数具有相同名称的问题,也不会为将方法分配给 _
(lodash、下划线等)的库带来问题。
这种方法的一个问题是未使用的 undefined
或 null
类型的参数将抛出。
对于undefined
,一种解决方案是使用默认参数:
function ({}={}, {}={}, value) {
// console.log(value)
}
遗憾的是 null
没有如此容易应用的解决方案。
我会推荐这种语法:
function(_index, value) {...}
不要隐藏 lodash 变量并且仍然有参数的描述以防万一它会被使用。
VS Code 也正确地高亮显示了这些名称,并且这些未使用的参数不会在自动修复代码发出异味后被删除
使用 function
arguments
对象怎么样?
function third() { const [,,thirdArg] = arguments;
return thirdArg;
}
console.log(third(1,2,3));
使用destructuring assignment,可以做到:
function f(...[, , third]) {
console.log(third);
}
f(1, 2, 3);
是否有任何标准方法可以在 JavaScript 中将函数参数标记为未使用,类似于在 Ruby 中使用下划线开始方法参数?
我们有一个示例可以使用,这在 jQuery 的 $.each
中很常见,您在其中编写的代码不需要索引,只需要值,在迭代回调中($.each
相对于Array#forEach
落后):
$.each(objectOrArrayLikeThing, function(_, value) { }
// Use value here
});
使用 _
是我见过的最接近标准的方法,是的,但我也看到了很多其他方法——无论如何都给它起一个反映其目的的名字(index
), 称之为 unused
, 等等
如果你需要忽略多个参数,你不能重复同一个标识符(它是disallowed in strict mode,这应该是每个人的默认值,也是模块和class
构造中的默认值) , 所以你做了 _0
和 _1
或 _
和 __
等
使用支持解构的浏览器可以做到:
function ({}, {}, value) {
// console.log(value)
}
这有点简洁,因为它避免了多个参数具有相同名称的问题,也不会为将方法分配给 _
(lodash、下划线等)的库带来问题。
这种方法的一个问题是未使用的 undefined
或 null
类型的参数将抛出。
对于undefined
,一种解决方案是使用默认参数:
function ({}={}, {}={}, value) {
// console.log(value)
}
遗憾的是 null
没有如此容易应用的解决方案。
我会推荐这种语法:
function(_index, value) {...}
不要隐藏 lodash 变量并且仍然有参数的描述以防万一它会被使用。
VS Code 也正确地高亮显示了这些名称,并且这些未使用的参数不会在自动修复代码发出异味后被删除
使用 function
arguments
对象怎么样?
function third() { const [,,thirdArg] = arguments;
return thirdArg;
}
console.log(third(1,2,3));
使用destructuring assignment,可以做到:
function f(...[, , third]) {
console.log(third);
}
f(1, 2, 3);