4

评估此行时会出现错误:

color && el.style.color = color;

这是怎么回事?DOM 2 级属性现在是“只读”的吗?

4

3 回答 3

6

问题是优先级,你需要括号:

function log(msg, color) {
    var el = document.createElement('p');
    el.innerText = msg;
    document.getElementById('log').appendChild(el);
    color && (el.style.color = color);
}

&&比没有括号的优先级更高=,因此您最终会尝试分配给表达式(例如,它有效地读取(color && el.style.color) = color;),这当然是您做不到的。

于 2012-05-27T16:22:40.140 回答
1

我同意 Mark Linus 的观点,尽管您也可以将代码重写为

color && (el.style.color = color)
于 2012-05-27T16:20:17.660 回答
0

如果您使用“ ?. ”可选链运算符,则必须将其删除。

例子:

//wrong
el?.style?.color = color;


//ok
el.style.color = color;
于 2021-08-13T21:04:54.023 回答