Javascript函数中的多个参数和不同的数据类型

时间:2014-02-20 15:34:06

标签: javascript arguments

我使用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

有什么建议吗?

2 个答案:

答案 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回答