0

今天在尝试记录和测试条件时,我遇到了 Chome 控制台的以下场景。有人可以帮我理解为什么会出现这种行为。

// 1. in this output "this is not good" is not there and returned is false then 
// undefined ?? is that returned value
console.log("this is not good = " + 100 > 0 )
false
undefined
// 2. next case is executing fine by introducing ()... 
// undefined ?? return type
console.log("this is not good = " + (100 > 0) )
this is not good = true
undefined
4

3 回答 3

3

问题在于运算符优先级。“加号”运算符 (+) 的优先级高于 >。

因此,您的第一个日志解释如下:

console.log((this is not good = " + 100) > 0);

在第一步中,JS interpeter 将连接字符串和“100”。

有关更多信息,请参阅此MDN 文章

于 2013-03-05T13:16:39.073 回答
0

这是正常的行为。

1) 当你评估

"this is not good = " + 100 > 0

您将评估:

"this is not good = 100" > 0

很明显false,所以false会打印出来。

2)当你评估

"this is not good = " + (100 > 0)

你会评估

"this is not good = " + true

它只会打印字符串。

奖金)对于undefined,这是 的返回值console.log()。它始终undefined用于此功能。

于 2013-03-05T13:22:58.070 回答
0

因为 Javascript 正在按照您指定的顺序执行操作。

"this is not good = " + 100

将导致

this is not good = 100

进而

"this is not good = + 100" > 0

将为假,因为 String 不大于零。


在您的流程中,第一个变量是一个字符串,+(加法运算符)将尝试连接两个字符串。然后100将被投入"100"并添加。

如果您改用括号,则将执行数学运算(因为第一个变量将是100,一个数字)并false返回结果,转换为字符串"false",然后添加到您的第一个字符串变量。

于 2013-03-05T13:27:08.490 回答