javascript 循环类型的JS:为什么一个版本输出整数而另一个输出字符串?

yhived7q  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(119)

我正在做一个在线课程JavaScript。我现在正在学习for循环,它有两种类型:对于(令i = 0; i〈学生长度; i++)for(let i in students)看代码,一个输出学生号1-8,另一个输出01,11,21,31阿索,为什么?

"use strict"

const students= ["Melanie","Leni","Matilda","Niels","Anke","Juergen","Lilli","Hans"]

console.log("=========================================")
console.log("Variante 1\n")

for (let i = 0; i < students.length; i++) {
  console.log(`Teilnehmer ${i+1} Name lautet: ${students[i]}`)
}

console.log("\n=========================================")
console.log("Variante 2\n")
for (let i in students) {
      console.log(`Teilnehmer ${i+1} Name lautet: ${students[i]}`)
}

我期望代码提供相同的输出。如果我删除了+1,它是相同的。

14ifxucb

14ifxucb1#

对象属性名称始终是字符串。在代码的第一个版本中,您在循环中使用数字,JavaScript在访问对象属性时将数字转换为字符串。因为它是数字,所以i + 1将是数字加法。
在第二个版本中,你的代码直接使用属性名,所以它们在循环中是字符串,因此i + 1意味着字符串连接。

相关问题