gpt4 book ai didi

javascript - 从 JavaScript 中的参数中删除参数

转载 作者:可可西里 更新时间:2023-11-01 02:30:27 24 4
gpt4 key购买 nike

我想有一个可选的 boolean 函数调用参数:

function test() {
if (typeof(arguments[0]) === 'boolean') {
// do some stuff
}
// rest of function
}

我希望函数的其余部分只看到 arguments 数组,没有可选的 boolean 参数。我意识到的第一件事是 arguments 数组不是数组!它似乎是一个标准的 Object,具有 0、1、2 等属性。所以我不能这样做:

function test() {
if (typeof(arguments[0]) === 'boolean') {
var optionalParameter = arguments.shift();

我得到一个错误,提示 shift() 不存在。那么有没有一种简单的方法可以从 arguments 对象的开头删除参数?

最佳答案

arguments 不是一个数组,它是一个类似对象的数组。您可以通过访问 Array.prototypearguments 中调用数组函数然后通过使用 .apply() 传递 argument 作为其执行上下文来调用它

尝试

var optionalParameter = Array.prototype.shift.apply(arguments);

演示

function test() {
var optionalParameter;
if (typeof (arguments[0]) === 'boolean') {
optionalParameter = Array.prototype.shift.apply(arguments);
}
console.log(optionalParameter, arguments)
}
test(1, 2, 3);
test(false, 1, 2, 3);

我在一些地方看到的另一个版本是

var optionalParameter = [].shift.apply(arguments);

演示

function test() {
var optionalParameter;
if (typeof (arguments[0]) === 'boolean') {
optionalParameter = [].shift.apply(arguments);
}
console.log(optionalParameter, arguments)
}
test(1, 2, 3);
test(false, 1, 2, 3);

关于javascript - 从 JavaScript 中的参数中删除参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19903841/

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