如何区分JavaScript中的变量类型?

时间:2012-01-14 16:00:03

标签: javascript

在JavaScript中,我想编写一个函数来确定传入的两个变量是否具有相同的数据类型,例如字符串,整数,布尔等。但是,我不知道如何比较这两个变量在数据类型方面,而不是存储在变量中的VALUES。

提前谢谢=)

4 个答案:

答案 0 :(得分:3)

您可以按照建议使用typeof,但这并不完美;数组和Date实例都将被视为“object”类型。

按类型比较的另一种不完美的方法是:

function sameTypes() {
  var tp = null, ts = Object.prototype.toString;
  if (arguments.length === 0) return true; // or false if you prefer
  tp = ts.call(arguments[0]);
  for (var i = 1; i < arguments.length; ++i)
    if (tp !== ts.call(arguments[i])) return false;
  return true;
}

如果在Object原型上调用“toString”函数的结果对所有函数都相同,那么你可以将该函数传递两个或更多(一个或多个我猜)值并返回true他们。这个不完美,因为它将原语提升为对象,因此字符串常量似乎与String实例具有相同的类型。

答案 1 :(得分:1)

您可以使用typeof运算符查找变量的数据类型。因此,要测试相同类型的两个变量(不一定是相同的值),可以使用

if(typeof a == typeof b) { /* same type */ }

答案 2 :(得分:0)

您正在寻找typeof

答案 3 :(得分:0)

使用typeof()

var test = true,
    test2 = "string";

if (typeof(test) === typeof(test2)) {}