评估此行时会出现错误:
color && el.style.color = color;
这是怎么回事?DOM 2 级属性现在是“只读”的吗?
评估此行时会出现错误:
color && el.style.color = color;
这是怎么回事?DOM 2 级属性现在是“只读”的吗?
问题是优先级,你需要括号:
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;
),这当然是您做不到的。
我同意 Mark Linus 的观点,尽管您也可以将代码重写为
color && (el.style.color = color)
如果您使用“ ?. ”可选链运算符,则必须将其删除。
例子:
//wrong
el?.style?.color = color;
//ok
el.style.color = color;