gpt4 book ai didi

javascript - JSLint - 使用 'arguments' 时不要改变参数 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:54 25 4
gpt4 key购买 nike

全部,

我使用 JSLint验证我的 JS 文件。在我最近的项目中,我使用以下格式为许多 JavaScript 函数设置默认值(进一步详细 here ):

function(a, b, option) {
option = arguments.length > 2 ? option : "some default value";
// ...
}

然而,这会导致最新版本的 JSLint 产生以下错误:

"Do not mutate parameter 'option' when using 'arguments'."

我知道使用更常见的分配默认值的方法(即 option = option || {};)可以抑制错误;但是,如果我打算将 falsey 值传递给 option,这将产生不正确的行为。

引入新变量是解决这个问题的唯一方法吗?例如:

var option2 = arguments.length > 2 ? option : "some default value";

最佳答案

我猜 JSLint 会警告您,因为您试图通过使用带有 arguments 关键字的检查来修改其中一个输入参数。 JSHint ,但是,在尝试您的代码时确实会给我任何警告。

您的问题的解决方案是检查是否定义了 option,这样您就可以通过发送虚假值来解决问题:

function(a, b, option) {
if(typeof option === "undefined") {
option = "some default value";
}
// ...
}

如果你觉得每次都写这个typeof检查很麻烦,创建一个isDef函数:

function isDef(param) {
return typeof param !== "undefined";
}
function(a, b, option) {
option = isDef(option) ? option : "some default value";
// ...
}

//西蒙 A.

关于javascript - JSLint - 使用 'arguments' 时不要改变参数 <x> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375506/

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