javascript 为什么我的输出中只有Bool而没有字符串?

l0oc07j2  于 2023-03-16  发布在  Java
关注(0)|答案(5)|浏览(150)
var timeRemaining = 10
var energy = 10
console.log("Game over:" + timeRemaining == 0 || energy == 0);

你好,在下面我只得到我的输出为真,但我的输出应该是游戏结束:真的吗?请帮忙谢谢。(https://i.stack.imgur.com/jq3n3.png
我试着改变qoutes或做布尔和一个单独的行,但我不能修复。

qcuzuvrc

qcuzuvrc1#

运算符优先级规则意味着:

"Game over:" + timeRemaining == 0 || energy == 0

被评价为:

(("Game over:" + timeRemaining) == 0) || (energy == 0)

这意味着("Game over:" + timeRemaining) == 0永远不会为真
然后,当var energy = 10(energy == 0)将为false,因此整个表达式将评估为false。
您应该改为:

"Game over:" + (timeRemaining == 0 || energy == 0)

`Game over: ${timeRemaining == 0 || energy == 0}`
7xzttuei

7xzttuei2#

var timeRemaining = 10
var energy = 10
console.log("Game over:" + timeRemaining == 0 || energy == 0);

首先,运算符优先级“+”

"Game over:" + timeRemaining // "Game over:10"

第二,运算符优先级“==”

"Game over:10" == 0 // false

第三,运算符优先级“==”

energy == 0 // false

最后

false || false // false
5jdjgkvh

5jdjgkvh3#

可读性更强的是:

var timeRemaining = 10
var energy = 10

console.log(`Game over: ${timeRemaining == 0 || energy == 0}`);
ni65a41a

ni65a41a4#

您需要在条件两边加上括号,否则将被解释为:
首先js执行字符串连接"Game over:" + timeRemaining =〉“Game over:10”
然后它检查字符串“Game over:10”是否等于0,结果不等于0。
然后另一边的||这也不是真的,所以控制台日志只打印false作为您设置的条件的结果。
要使其正常工作,您的行应如下所示:
console.log("Game over: " + (timeRemaining == 0 || energy == 0));
记录“游戏结束:false”?如果不是,我会将该行更改为:
if (timeRemaining === 0 || energy === 0) console.log('Game Over!')
下面是一些关于javascript的一般性建议:

  • 不要使用var-请改用letconstcheck here
  • 决定你是否要放分号,不要只是从一行切换到另一行。
  • 尽可能使用强比较(===优于==)。
oymdgrw7

oymdgrw75#

我在console.log中添加了一个新行,它工作了。这是通过的代码部分

// Implement getPrices()
function getPrices(taxBoolean) {
    for (var item of dishData) {
        var finalPrice;
        if (taxBoolean===true) {
            finalPrice = item.price * tax;
        }
        else if (taxBoolean===false) {
            finalPrice = item.price;
        }
        else {
            console.log('You need to pass a boolean to the getPrices call!')
            return

        }
        console.log("\nDish:", item.name, "Price: $"+finalPrice); 

    }
    
}

相关问题