有人可以解释为什么您需要在控制台中将整数变量和数字放在括号中吗.log?



有人可以解释为什么以下代码仅在我将 beerCount-1 放在括号中时才有效吗?我真的很困惑。

var beerCount = 99
function beer(){
while (beerCount>0) {
console.log(beerCount + " of beer on the wall. " + beerCount + " of beer. Take one down, pass it around, " + (beerCount-1) + " of beers on the wall.");
beerCount--;
}
}
beer()

+-具有相同的运算符优先级:14,并且它们都从左到右计算。

当字符串与其他任何内容+d 时,生成的操作是串联:如果另一端不是字符串,则用字符串强制使用。(如果两边都是数字,则结果运算为加法(

但只有数字可以彼此-d。如果-一侧的某些东西不能被强制到一个数字,那么结果NaN

所以,随着

"someString " + (beerCount-1) + " someOtherString"

括号确保首先计算中间表达式:

"someString " + someNumber + " someOtherString"

没有它,由于从左到右的操作,你会得到:

"someString " + beerCount - 1 + " someOtherString"
// ^^^^^^^^^^^^^^^^^^^^^^ evaluate first
"someString 99" - 1 + " someOtherString"
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluate second, but cannot subtract;
// "someString 99" cannot be coerced to a number, so result is NaN
NaN + " someOtherString"

这行不通。

最新更新