0

如何确定value变量的 是否是objectusing switch

var alice = condition ? true : {};
switch(alice){
    case true:      break;
    case undefined: break;
    // Is there something like:
    case object:    break;
}

我目前正在通过附加if语句解决上述问题(除了我现有switch的已经很大并且能够处理和之类的值undefinedtrue。所以我想知道是否有任何方法可以仅使用现有的switch(alice).

4

4 回答 4

2

这是另一种选择:

var alice = condition ? true : {};

switch(true){
   case alice === true:      break;
   case alice === undefined: break;
   case alice instanceof Object:    break;
}
于 2013-10-31T02:06:01.230 回答
2

这种方式是不可能的。但是,检查您的变量类型可能会帮助您完成您正在尝试做的事情。

var alice = condition ? true : {};
switch (typeof(alice)) {
    case 'boolean': break; // if it's true or false
    case 'undefined': break;
    case 'object': break; // {}, [], {"a": "b"}
}

请注意,object如果您也有非空对象或数组,也会抛出。

于 2013-10-31T01:52:24.503 回答
2

您可以使用typeof运算符:

switch (typeof alice) {
 // ...
}

但是请注意,“true”不是会显示的值,typeof因为“true”是布尔值,而不是类型。

因此,如果您也必须找出这一点,您可以这样做:

switch (typeof alice) {
  case 'object' : 
    // is an object, do something
    break;
  case 'boolean' :
    if (alice) {
      // is true, do something
    }
    break;
  case 'undefined' :
    // is undefined, do something
    break;
}
于 2013-10-31T01:52:50.343 回答
0

这个人怎么样:

switch(typeof x)
{ 
  case 'object': alert("object"); break; 
  default: alert("not object");
}
于 2013-10-31T01:52:28.717 回答