错误在计算此行时显示:
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;