gpt4 book ai didi

javascript - 理解 javascript 中的 for 循环

转载 作者:行者123 更新时间:2023-11-29 10:02:25 26 4
gpt4 key购买 nike

我试图完全理解 for 循环。我做了一些研究和了解。

我知道像这样的循环

for(var i = 0; i < 5; i++) { console.log(i) }

表示继续递增i0 开始记录为 i小于 5

我也知道像这样的循环

var a = [];
a[5] = 5;
for (var x in a) {
console.log(x);
}

这意味着循环 for x in a 并记录 5;

正在搜索和研究,然后我看到类似的东西

function aNumber() {
var aInt = 521;
var intString = aInt.toString();
var intLength = intString.length;
var result = 0;
for (var i in intString) {
result += Math.pow((+intString[i]), intLength);
}
console.log(result);
//...

}

aNumber();

我了解 int 的转换至 string .但是循环对我来说是新的。我知道 Math.pow() 是什么函数确实喜欢它接受参数(Math.pow(2,2) 与 2**2 相同)和 ++intString通过 string作为int我不太明白的是这里的这一部分

result += Math.pow((+intString[i]), intLength);

它使整个loop看起来很困惑。

有人可以像我解释其他人一样用简单的术语帮我解释一下吗?谢谢

最佳答案

for..in 循环迭代对象上的可枚举属性名称(包括从原型(prototype)继承的属性)。因为字符串的可枚举属性始终是它们的数字索引而不是其他任何内容,所以行:

for (var i in intString)

可以替换为

for (let i = 0; i < intString.length; i++)

同时保留其余代码相同,它会执行相同。 intString[i] 表达式仅引用正在迭代的当前字符。

但我不建议在大多数情况下使用 for..in 循环 - 不难与 for..of 混淆(这是完全不同的),和数组方法通常更好用。例如,您的代码中生成result的代码可以替换为使用Array.prototype.reduce,它可以生成result 立即,无需任何重新分配:

const intString = '521';
const intLength = intString.length;
const result = Array.prototype.reduce.call(
intString,
(a, intChar) => a + (intChar ** intLength),
0 // initial value of accumulator a
);
console.log(result);

关于javascript - 理解 javascript 中的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52847471/

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