我的Ajax响应可以是json object
,bool
或各种string values
我可以检查它是否是switch语句中的对象吗?
$.post('url',{some:'data'},function(response){
switch (response){
case true:
console.log('is true');
break;
case false:
console.log('is false');
break;
case 'success':
console.log('is success');
break;
case typeof this === 'object' // thought I'd try this but it didn't work.
console.log('is object');
break;
}
});
答案 0 :(得分:5)
switch
在参数和case
表达式之间执行相等比较。因此case typeof this === 'object'
会计算typeof this === 'object'
的值,true
或false
取决于this
是什么(window
你的回调),并将其与response
进行比较。它不会测试response
的类型。如果要对response
的类型执行切换,请将其用作参数。
尝试:
switch (typeof response) {
case 'boolean':
if (response) {
console.log('is true');
} else {
console.log('is false');
}
break;
case 'string':
if (response == 'success') {
console.log('is success');
} else {
// do something
}
break;
case 'object':
console.log('is object');
break;
}
更一般地说,当您想对相同的值进行一系列相等测试时,应使用switch
。你不能在同一个switch
中混合相等和类型测试;您需要使用switch
作为一个,if
作为另一个。{/ p>
答案 1 :(得分:0)
有一个默认案例:
default :
if(typeof response === 'object'){ // thought I'd try this but it didn't work.
console.log('is object');
}
break;