gpt4 book ai didi

javascript - 为什么我的 Javascript 将未记录的值记录到 CodeCademy 控制台?

转载 作者:行者123 更新时间:2023-11-29 21:33:14 24 4
gpt4 key购买 nike

这已经发生了很多次,直到现在我才忽略它,但它一直困扰着我,因为我不确定我的代码是否正确。

问题是,当我使用 console.log(TextA) 或 (TextB) 然后将值放入变量时,控制台将记录我推送到变量的值。

示例如下:

我的 CodeCademy 代码是:

var slaying = true;
var youHit = (Math.floor(Math.random() * 2) == 1);
var damageThisRound = Math.floor(Math.random()*5 + 1);
var totalDamage = 0;

while (slaying) {
if (youHit) {
console.log("Congrats, you hit");
} else {
console.log("You were defeated by the dragon");
}
slaying = false;
}

我的控制台日志是:

Congrats, you hit
false

这是否发生在其他人身上?这只是 CodeCademy 系统的错误还是我的 Javascript 不正确?

最佳答案

这是因为它们的解释器,很像浏览器控制台,会评估您放入其中的所有代码,并且 javascript 中的所有操作都有返回值。例如试试这个:

var y = (foo = 'x');
console.log(y);

赋值操作有返回值。当您使用诸如 evalnew Function 之类的东西来评估代码时,这会变得更加明显,因为它们会向您显示最后解释的代码行的值,然后您会看到甚至 do..while 语句都有返回值。如果更改 while 语句的最后一行,您将看到记录的是最后一个值而不是 false

这是另一个使用 eval 的示例,可能会更好:

eval('var foo = 0; i = 0; while( i < 2 ) { i++; foo = i * 9; } ')

请注意,我没有在那里明确记录任何内容,但是因为 foo = i * 9(其中 i = 2)是最后一行计算的,您将看到18 在您的控制台中。另请注意,如果我在该语句中包含 var,您会看到 1,因为 i++ 将是最后一个返回值的操作(更让人困惑的是,var 赋值返回 undefined)。

关于javascript - 为什么我的 Javascript 将未记录的值记录到 CodeCademy 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35583788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com