运算符优先级之谜:JavaScript 的三元运算符和连接
在 JavaScript 中使用三元运算符可能会令人困惑,尤其是与其他运算符混合使用时运营商。考虑以下代码片段:
h.className += h.className ? ' error' : 'error'
此代码的目的是将字符串“error”附加到 HTML 元素“h”的 className 属性。但是,代码失败并出现错误。要理解其中的原因,我们需要剖析 JavaScript 中运算符的优先级。
三元运算符 (?:) 的优先级高于赋值运算符 (=)。因此,上面的代码相当于:
h.className = h.className + (h.className ? ' error' : 'error')
这样的解释更有意义。三元运算符检查 h.className 是否不为 null 或未定义(“真实”值)。如果为 true,则会将“error”附加到 h.className。否则,它会附加“错误”。
要修复原始代码,我们需要在括号内显式添加赋值运算符:
h.className = h.className + (h.className ? ' error' : 'error')
通过将赋值运算符放在括号内,我们可以覆盖优先规则并确保整个三元表达式分配给 h.className.
以上是为什么我的 JavaScript 代码会因'h.className = h.className”而失败? \'错误\':\'错误\'`?的详细内容。更多信息请关注PHP中文网其他相关文章!