gpt4 book ai didi

javascript - 为什么这两段代码返回不同的值?

转载 作者:行者123 更新时间:2023-11-30 08:00:41 24 4
gpt4 key购买 nike

我正在通过在线书籍“Eloquent JavaScript”学习 Javascript - 顺便说一句,这是一个很棒的资源。我在“数据结构”一章中遇到了这个函数:

function tableFor(event,journal){
var table = [0,0,0,0];
for (var i = 0; i < journal.length; i++){
var entry = journal[i], index = 0;
if (hasEvent(event,entry)) index += 1;
if (entry.squirrel) index += 2;
table[index] += 1;
}
return table;
}

如您所见,它遍历一个数组,并根据第一个对象具有 argument:event 的次数输出另一个数组。我像这样重写了这个略有不同......

function tableFor(event,journal){
var table = [0,0,0,0];
for (var i = 0; i < journal.length; i++){
var entry = journal[i], index = 0;
if (hasEvent(event,entry)){
index += 1;
}
if (entry.squirrel){
index += 2;
table[index] += 1;
}
}
return table;
}

唯一的变化是 if 语句周围的括号,我认为这是最佳实践。但是,它输出与第一段代码不同的值。为什么会这样?是否有一些我不明白的范围问题?如果你不知道我在说什么,这里是本书章节的链接:Eloquent JavaScript以及对象 JOURNAL 的链接:JavaScript Object

感谢您的帮助!

最佳答案

在原始代码中,这是:

if (entry.squirrel) index += 2; 
table[index] += 1;

实际上是两个不相关的语句:

if (entry.squirrel) { index += 2; }
table[index] += 1;

它的缩进很严重。在 Javascript 中,与大多数 C 派生语言一样,if 之后的单个语句可以构成条件为真时要执行的 block 。要包含多个语句,必须使用大括号。

关于javascript - 为什么这两段代码返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105858/

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