css 这是什么?- style=“color:${错误&&“红色”}”

wvyml7n5  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(74)

这种类型的符号是什么意思?

render() {
          const {isAuth, error} = this.state;

          document.getElementById("root").innerHTML = `
             <div style="color: ${error && "red"}">
                ${isAuth ? "Welcome back!" : error}
              </div>
           `;
        }

我不明白为什么要这样写。它在样式属性中有什么意思?

rhfm7lfc

rhfm7lfc1#

这是short-circuit evaluation的一个示例。

result = '' && 'foo';  // result is assigned "" (empty string)
result = 2 && 0;       // result is assigned 0
result = 'foo' && 4;   // result is assigned 4

Source

  • ''为false,因此返回空字符串。
  • 2为真,返回0。
  • 'foo'为真,因此返回4

实际上,如果error为真,则:

`<div style="color: ${error && "red"}">`

会变成这样

`<div style="color:red">`

如果error为false,则代码将变为

`<div style="color:false">`

此外,如果错误为"",则代码将变为

`<div style="color:">`

如果error是"foo"或其他truthy值,则代码将变为

`<div style="color:red">`
eqfvzcg8

eqfvzcg82#

我在这里猜测了一点,因为根据框架的不同,这些可能意味着不同的东西。但我假设我们正在谈论的是vanilla JS(或使用vanilla js条件的框架)
下面是一个小例子:

const apple = true;
const ananas = false;

console.log('1', apple && 'it is an apple'); // returns "1 it is an apple"
console.log('2', ananas && 'it is an ananas'); // returns "false"

这种表示法被称为"短路评估"。
来自MDN:* 逻辑AND表达式是一个短路运算符。由于每个操作数都被转换为布尔值,如果一个转换的结果为假,AND运算符将停止并返回该假操作数的原始值;它不计算任何剩余的操作数。*
所以写conditionOne && doSomething和写if (conditionOne) { doSomething }是一样的
您可以在MDN(短路评估)上了解相关信息

相关问题