为什么我的 Javascript 将未记录的值记录到 CodeCademy 控制台
Why is my Javascript logging Unlogged values to the CodeCademy Console?
这种情况已经发生了很多次,直到现在我才忽略它,但是它困扰着我,因为我不确定我的代码是否正确。
问题是,当我控制台.log(TextA)或(TextB)然后将值放入变量中时,控制台将记录我推送到变量的值。
示例如下:
我的代码代码是:
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);
赋值操作具有返回值。当您使用 eval
和 new 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
)。
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- AngularJs对所有页面中的所有记录进行排序
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- 猫鼬在特定记录中查找嵌套记录
- 浏览器何时记录历史记录
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- 更新成员数据模型中的记录列表
- 如何使用提交按钮搜索表中的记录
- 正在OrientDB中嵌入函数中的记录
- 使用Rails 3中的AJAX删除记录
- 用javascript记录传递给回调的参数的约定是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 输入类型按钮返回历史记录并返回顶部
- 我怎么能把一个错误当作未捕获的错误来记录呢
- HTML5历史记录-返回上一个完整页面按钮
- 如何使用 Backbone 将多条记录呈现到 html 表中.js .
- 为什么我的 Javascript 将未记录的值记录到 CodeCademy 控制台