经常在 Javascript 源码中看到 a ? b : c,但我不太理解,特意查了一下。
在JavaScript中,?
和 :
是一对运算符,它们称为”逻辑非”和” logical or”(逻辑或)。
a ? b : c
是一种 ternary 操作符,用于简化 if-else 语句。它的工作原理是:
- 如果表达式
a
为false
或零值,则执行并返回表达式b
- 如果表达式
a
不为false
或零值,则执行并返回表达式c
因此,a ? b : c
equivalent 的 if-else 语句是:
1 | if (a === false || a === 0) { |
这两种方式都可以实现相同的逻辑,但第一种方式使用 ternary 操作符,第二种方式使用 if-else 语句。
在 JavaScript 中,?
和 :
运算符不仅用于逻辑运算,还可以用于其他情况,比如:
a ? b : c
可以用作条件表达式,用于简化 if-else 语句。a & b | c
可以用作位运算,用于多重赋值。a & b ^ c
也可以用作位运算。
总的来说,?
和 :
运算符是 JavaScript 中一种强大的简写工具,可以帮助提高代码效率和易读性。