问题:三目运算符是否存在缩写?
- 使用过 PHP 的同学应该知道,三目运算符是有缩写的,当然百度也有相关资料提到过
- 于是我实际测试了一下,发现 C 语言也有类似的缩写形式,结果让我对三目运算符的定义有些“惊讶”。

- 然后,我又去测试了一下 JS,结果并不尽如人意。

当使用完整的三目运算符形式时,JS 就不会报错了。
逻辑运算符&&是否可以代替 if 语句?
在一些语言,例如在 JS 中:
a && b如果a是false,那么返回false,并且后续的b就不会被计算了,因为短路原则会直接返回false。- 如果
a是true,则继续计算b,最终返回b的值。
||也有类似的规则,这里就不详细展开了。
毫无疑问,非零的数字在逻辑运算中都被认为是true。
接下来我们看看在 C 语言中的表现:
嗯,C 语言中的行为是:true && b 会继续检查b的值,如果b是false,则整个表达式为false,否则为b的值。
但值得注意的是,C 语言中的逻辑运算符并不会像 JS 那样直接充当if的作用。
实际上,JS 中的逻辑运算符行为与条件运算符的缩写形式有些相似。
&& 是否会超越括号的优先级?
接着上面的问题,
当
true && b时,如果a为false,就不再计算b。那么,如果先给b赋值,优先级会如何呢?
我进行了实际测试:

结果是:优先级的作用被忽视了。
这是一个奇特的例子,显示了逻辑运算符在某些情况下忽略了优先级。
老师的回复:在分析优先级时,应该仔细检查每行代码,确保优先级高的部分先执行,尽管
&&运算符会先计算,但这只是它的工作机制。
好,今天的折腾日记就到这里了。
