结果有区别吗?效率有区别吗?
发现自己sb了……一开始打错字,后来又没注意到b的问题,补充下吧,!b为false
a ? b : c
的意思是,如果 a
的值判定为 true
,则表达式返回 b
的值;否则,返回 c
的值。
a && b || c
是逻辑计算,返回整个表达式的值,只不过出于优化的角度,如果前面的计算已经确定了结果,就会提前中止,此时返回的可能是中间某个表达式的值。
所以当 a = 1, b = 0, c = 1
的时候,就会返回 c
的值,此时和上面的二元运算符结果不同。
a?b:c // true时返回b;false时返回c
a&&b||c // a,b都不是假值,返回b;a,b其中有一个是假值,返回c
也就是说,当b为假值(false, null, 0, "", undefined 和 NaN)时,两者结果会不同。
而最长出现的比如( a = 1 ) && console.log( a ) || 2,则最终会依次显示 1 和 2,因为console.log( a ) return 为 undefined。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
前者b不参与判断。后者b参与判断。