首页 > web前端 > js教程 > 为什么 `${\'h.className = h.className ? \' error\' : \'error\'}` 在 JavaScript 中无法按预期工作?

为什么 `${\'h.className = h.className ? \' error\' : \'error\'}` 在 JavaScript 中无法按预期工作?

Barbara Streisand
发布: 2024-10-30 04:34:28
原创
718 人浏览过

Why does `${'h.className  = h.className ? ' error' : 'error'}` not work as expected in JavaScript?

JavaScript 中三元运算符优先级疑难解答

JavaScript 的三元运算符是条件赋值的强大工具,但理解其优先级可能很棘手。本文重点讨论三元运算符与=结合的特定场景。

理解问题

考虑以下代码片段:

h.className += h.className ? ' error' : 'error'
登录后复制

乍一看,代码似乎根据三元条件将 h.className 的当前值与“error”或“error”连接起来。然而,这种解释可能会导致错误。

正确的解释

问题在于运算符的优先级。在 JavaScript 中,运算符的优先级高于三元运算符。这意味着上面的表达式计算如下:

h.className = h.className + (h.className ? ' error' : 'error')
登录后复制
登录后复制

解决方案

为了确保三元运算符正确应用,代码应编写为:

h.className = h.className + (h.className ? ' error' : 'error')
登录后复制
登录后复制

这确保了在与 h.className 连接之前对三元运算符进行求值。

其他注意事项

需要注意的是h.className = ' error' 也是有效的,但它不如更新后的代码精确。 = 运算符仅适用于 h.className,而更新后的代码显式地将三元条件结果与 h.className 连接起来。

结论

理解运算符优先级对于编写正确的 JavaScript 代码。通过阐明三元运算符和 = 运算符的优先级规则,本文为在 JavaScript 中使用条件赋值时遇到的常见挑战提供了解决方案。

以上是为什么 `${\'h.className = h.className ? \' error\' : \'error\'}` 在 JavaScript 中无法按预期工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板