bob*_*bob 5 javascript ternary short-circuiting
通过短路,您可以阻止评估表达式的一部分:
let x = "", y = 123;
x && alert("foo"); // ""
y || alert("bar") // 123
Run Code Online (Sandbox Code Playgroud)
由于逻辑运算形式表达式,您可以在函数调用或返回语句中使用它们.
但最终,这只不过是条件分支,可以通过三元运算符轻松实现:
x ? alert("foo") : x; // ""
y ? y : alert("bar"); // 123
Run Code Online (Sandbox Code Playgroud)
这更具可读性,同样简洁.除了说明性术语之外,是否有理由利用逻辑运算符的短路特性?
这是真的(好吧,几乎是真的)
x ? x : y
Run Code Online (Sandbox Code Playgroud)
在逻辑上等同于
x || y
Run Code Online (Sandbox Code Playgroud)
但是,就代码运行时发生的情况而言,它们并不相同.在这种? :情况下,x可以对子表达式进行两次评估.在x || y,它肯定只评估一次.对于简单的变量引用,这无关紧要,但如果x是函数调用,它可能会影响行为,它肯定会影响性能.
(其中一个表达式可能被评估两次的事实就是我在第一句中"几乎"的意思.)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |