我正在学习 JavaScript 基础知识。这两行代码似乎是等效的,我想知道解析器是否只是忽略第二种情况中的括号:
var a = 5 + 5;
var b = (5 + 5);
编辑: 在查看了评论后,我意识到问题的背景可能会有所帮助,这些评论很有帮助。我试图将一些 JSX 分配给变量,并注意到括号似乎是可选的:
var a =
<div>
<SomeComponent />
</div>;
var b = (
<div>
<SomeComponent />
</div>
);
在 return
语句的情况下,我知道由于自动分号注入(inject)而需要括号。但如果是简单的赋值,括号仍然重要吗?
编辑2: 感谢您的评论和回答帮助我缩小范围并阐明我的问题。我想我真正想问的是,在这种情况下,JSX 解析器(例如 Babel)会忽略括号吗?由于两者都会被转译为:
var a = React.createElement(
"div",
null,
React.createElement(
SomeComponent,
null
)
)
最佳答案
它们不会被忽视,但简单的数学告诉你:
5 + 5 == (5 + 5)
如果您有一组不同的值,它会发生变化 - 例如:
var a = (5 * 5) + 5 * 5;
var b = 5 * (5 + 5) * 5;
var c = 5 * 5 + (5 * 5);
var d = (5 * 5 + 5) * 5;
var e = 5 * (5 + 5 * 5);
var f = (5 * 5 + 5 * 5);
console.log(a); // 50
console.log(b); // 250
console.log(c); // 50
console.log(d); // 150
console.log(e); // 150
console.log(f); // 50
这取决于操作顺序(又名 BODMAS/BIDMAS/BEDMAS 等)
关于javascript - 将 JSX 分配给变量时是否忽略括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63066055/