同一个函数参数可以接受不同的数据类型吗?

时间:2011-12-21 16:25:16

标签: javascript types arguments

抱歉这个简单的问题。我有这个功能:

function(var1){ 
    var myString =var1;
    //  myString is parsed for integers 
}

是否有必要始终将参数称为字符串? e.g。

function("23")

或者我可以安全混搭吗? e.g。

function(23);
function("string with number 23");

5 个答案:

答案 0 :(得分:1)

您可以将所需的任何数据类型传递给函数。关键是你如何使用这些论点。

答案 1 :(得分:1)

您可以混合使用 - 只要您的整数解析器设置为使用混合物。

答案 2 :(得分:1)

如果您希望数字为int,并且某种数学不能放入语音标记,您可以使用任何一种方法。

如果您确实将数字作为字符串传递,则可以使用

parseInt("string");

答案 3 :(得分:1)

是的,您可以传递不同的数据类型,因为Javascript是动态类型语言。 如果您希望根据数据类型采用不同的行为,则可以使用instanceof

像这样:

function f(var1) {
    if(var1 instanceof String) {
        // handle strings
    } else if(var1 instanceof Object) {
        // handle objects
    } else if(var1 instanceof Date) {
        // handle dates
    }
}

这也可用于过滤/验证输入数据。

更新:请注意@jakeclarkson关于instanceoftypeof运营商之间差异的评论。

答案 4 :(得分:1)

简答:是

长答案:类型检查是JavaScript的真正难点。如果您开始尝试区分数组和对象,这只会变得更难。

我会使用Crockford的typeOf函数,可以找到here

但是,如果您只计划传递字符串或数字,则应执行以下操作:

function (var1) {
   if (typeof var1 === "number"){
     //treat it like a number
   } else if (typeof var1 === "string") {
     //try to parse it
   } else {
     //Its neither a string nor a number
   }
}