在javascript表达式中使用括号;(p) ??1:0“;有效果吗?

在javascript表达式中使用括号;(p) ??1:0“;有效果吗?,javascript,Javascript,以下面的javascript为例: var x = (p) ? 1 : 0; p可以是任何值。是否有任何情况下括号会起作用 如果是这样:请提供示例。除了可读性之外,我想不出任何理由需要括号 除了可读性,我想不出还有什么理由需要括号 如果p被分成几个具有不同运算符的布尔表达式,嵌套括号可以决定如何计算表达式的顺序。但我觉得你已经知道了,这不是问题的一部分 但不,括号对p整体没有影响。我不知道为什么会有人把它们放进去,因为我认为它们不会提高可读性。如果p被划分为几个具有不同运算符的布尔表达式,嵌套

以下面的javascript为例:

var x = (p) ? 1 : 0;
p可以是任何值。是否有任何情况下括号会起作用


如果是这样:请提供示例。

除了可读性之外,我想不出任何理由需要括号

除了可读性,我想不出还有什么理由需要括号

如果p被分成几个具有不同运算符的布尔表达式,嵌套括号可以决定如何计算表达式的顺序。但我觉得你已经知道了,这不是问题的一部分


但不,括号对p整体没有影响。我不知道为什么会有人把它们放进去,因为我认为它们不会提高可读性。

如果p被划分为几个具有不同运算符的布尔表达式,嵌套括号可以决定表达式的计算顺序。但我觉得你已经知道了,这不是问题的一部分


但不,括号对p整体没有影响。我不知道为什么会有人把它们放进去,因为我不认为它们能提高可读性。

不。有时候,它是通过类比来实现的:

if (p)

括号是强制性的。

否。有时可以通过类比:

if (p)

括号是必须的。

这是一个有点做作的例子,但嘿,为什么不呢

var y = -2;
var x = (y+=2)?0:1?1:0;
alert(x); // will alert '1'

var y = -2;
var x = y+=2?0:1?1:0;
alert(x); // will alert '-2'

检查此Javascript优先级表:。如果在三元运算符的求值表达式中使用三元运算符,则三元运算符(例如“?:”)下方的任何内容都需要括号。

这是一个有点做作的示例,但是,嘿,为什么不呢

var y = -2;
var x = (y+=2)?0:1?1:0;
alert(x); // will alert '1'

var y = -2;
var x = y+=2?0:1?1:0;
alert(x); // will alert '-2'

检查此Javascript优先级表:。如果在三元运算符的求值表达式中使用三元运算符,则三元运算符(例如“?:”)下方的任何内容都需要括号。

回答得好。但p是一个表达式,而不是占位符/伪东西。让我试着简化一下我的答案。基本上,如果p是一个表达式,其中包含一个优先级低于三元运算符的运算符,则需要在p周围包含括号,否则该表达式将在该运算符上“拆分”。在这种用法中,“p”仍然可以是一个表达式(例如“y+=2”)——我不确定“占位符/伪东西y”是什么意思。不管怎样,似乎选择的答案比我的答案更清楚回答得好。但p是一个表达式,而不是占位符/伪东西。让我试着简化一下我的答案。基本上,如果p是一个表达式,其中包含一个优先级低于三元运算符的运算符,则需要在p周围包含括号,否则该表达式将在该运算符上“拆分”。在这种用法中,“p”仍然可以是一个表达式(例如“y+=2”)——我不确定“占位符/伪东西y”是什么意思。不管怎样,似乎选择的答案比我的答案更清楚