Viv*_*ngh 7 javascript jquery ternary-operator
在javascript中编写速记if-else时,会出现语法错误.这是我的代码:
data && data.cod == '404' && return;
Run Code Online (Sandbox Code Playgroud)
虽然我使用正常的if-else工作正常如下:
if(data && data.cod == '404') {return};
var temp = data && data.main && data.main.temp;
//Code here...
Run Code Online (Sandbox Code Playgroud)
我知道,如果我使用三元运算符,它的工作正常,return (data && data.cod == '404')?'true':'false';
但我在条件基础上看"返回",否则继续进行.
您要做的是违反语法规则.
该return
关键字只能在return语句的开头使用
在data && data.cod == '404' && <something>
,你唯一可以放置的<something>
是表达式,而不是声明.你不能放在return
那里.
要有条件地返回,请使用适当的if
声明:
if(data && data.cod == '404') {
return;
}
Run Code Online (Sandbox Code Playgroud)
我建议不要像使用快捷方式那样使用快捷方式来执行带副作用的代码.条件运算符和布尔运算符的目的是生成一个值:
好:
var value = condition ? valueWhenTrue : valueWhenFalse;
Run Code Online (Sandbox Code Playgroud)
坏:
condition ? doSomething() : doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
你不应该这样做,即使语言允许你这样做.这不是条件运算符的目的,而且对于试图理解代码的人来说这很困惑.
if
为此使用适当的声明.这就是它的用途:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想要,你可以把它放在一行:
if (condition) { doSomething(); } else { doSomethingElse(); }
Run Code Online (Sandbox Code Playgroud)