在javascript中编写速记if-else时,会出现语法错误。这是我的代码:
data && data.cod == '404' && return;
虽然我使用普通的if-else工作正常如下:
if(data && data.cod == '404') {return};
var temp = data && data.main && data.main.temp;
//Code here...
我知道,如果我使用像return (data && data.cod == '404')?'true':'false';
这样的三元运算符,它可以正常运行,但我正在寻找"返回"在有条件的基础上,否则继续。
答案 0 :(得分:9)
您要做的是违反语法规则。
return
关键字只能在return statement
在data && data.cod == '404' && <something>
中,<something>
中唯一可以放置的是表达式,而不是语句。你不能把return
放在那里。
要有条件地返回,请使用正确的if
声明:
if(data && data.cod == '404') {
return;
}
我建议不要像使用快捷方式那样使用快捷方式来执行带副作用的代码。条件运算符和布尔运算符的目的是生成值:
不可强>
var value = condition ? valueWhenTrue : valueWhenFalse;
<强>为:强>
condition ? doSomething() : doSomethingElse();
你不应该这样做,即使语言允许你这样做。这不是条件运算符的目的,而且对于试图理解代码的人来说这是令人困惑的。
为此使用正确的if
语句。这就是它的用途:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
如果您真的想要,可以将它放在一行:
if (condition) { doSomething(); } else { doSomethingElse(); }
答案 1 :(得分:0)
那么只需在if
中写回var result = (data && data.cod == '404')
if (result) {
return result;
} else {
//otherwise
}