这种类型的符号是什么意思?
render() {
const {isAuth, error} = this.state;
document.getElementById("root").innerHTML = `
<div style="color: ${error && "red"}">
${isAuth ? "Welcome back!" : error}
</div>
`;
}
我不明白为什么要这样写。它在样式属性中有什么意思?
2条答案
按热度按时间rhfm7lfc1#
这是short-circuit evaluation的一个示例。
Source
''
为false,因此返回空字符串。2
为真,返回0。'foo'
为真,因此返回4实际上,如果
error
为真,则:会变成这样
如果error为
false
,则代码将变为此外,如果错误为
""
,则代码将变为如果error是
"foo"
或其他truthy值,则代码将变为eqfvzcg82#
我在这里猜测了一点,因为根据框架的不同,这些可能意味着不同的东西。但我假设我们正在谈论的是vanilla JS(或使用vanilla js条件的框架)
下面是一个小例子:
这种表示法被称为"短路评估"。
来自MDN:* 逻辑AND表达式是一个短路运算符。由于每个操作数都被转换为布尔值,如果一个转换的结果为假,AND运算符将停止并返回该假操作数的原始值;它不计算任何剩余的操作数。*
所以写
conditionOne && doSomething
和写if (conditionOne) { doSomething }
是一样的您可以在MDN(短路评估)上了解相关信息