我有一个'if'声明,只是想知道这些是否都有效(我相信它们都是),如果有,那有什么区别?
var type;
var type2;
if ((type == 'BOS'|| type == 'BPS'|| type == 'BRS') && (type2 == 'BOS'|| type2 == 'BPS'|| type2 == 'BRS))
Run Code Online (Sandbox Code Playgroud)
要么
if ((type == 'BOS') || (type == 'BPS') || (type == 'BRS') && (type2 == 'BOS') || (type2 == 'BPS') || (type2 == 'BRS'))
Run Code Online (Sandbox Code Playgroud)
哪个语法正确,他们做了什么不同的事情?有没有办法缩短这个陈述?
谢谢
这两个陈述是不同的.是的,它们在语法上都是有效的陈述,但从逻辑上讲它们是不同的.由于&&运算符的优先级高于|| 在javscript中,结果逻辑将在语句2中进行如下评估:
1) (type == 'BRS') && (type2 == 'BOS')
2) (type == 'BOS') || (type == 'BPS') || (result of 1) || (type2 == 'BPS') || (type2 == 'BRS')
Run Code Online (Sandbox Code Playgroud)
在声明1中:
1) (type == 'BOS'|| type == 'BPS'|| type == 'BRS')
2) (type2 == 'BOS'|| type2 == 'BPS'|| type2 == 'BRS')
3) (result of 1) && (result of 2)
Run Code Online (Sandbox Code Playgroud)