我使用arguments
来允许函数中的多个参数,如下所示:
function foo(){
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}
传递foo(1, 2, 3, 4)
=确定
但我需要知道是否可以使用各种类型的参数,例如foo(1, "b", 3, "d")
。我尝试时得到Value is not what was expected
。
有什么建议吗?
答案 0 :(得分:1)
您需要自己在foo
函数中处理此问题,例如,如果您希望function
作为第一个argument
,则需要先检查foo
是否if(typeof arguments[0] != "function")
throw new Error("unexpected argument")
{1}}:
number
或者如果您需要if(typeof arguments[0] != "number")
throw new Error("unexpected argument")
作为第一个参数:
var o = parseInt(arguments[0])
if(Number.isNaN(o))
throw new Error("unexpected argument")
或尝试将其转换为数字,例如:
{{1}}
答案 1 :(得分:0)
另外,在内置的javascript对象类(Date,Array,RegExp等)之间区分函数参数的一种可靠方法是使用以下比较:
Object.prototype.toString.call(arguments[0]) === '[object Date]'
Object.prototype.toString.call(arguments[0]) === '[object RegExp]'
依此类推,使用类似的结构@ am1r_5h回答