我正在做一个在线课程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,它是相同的。
1条答案
按热度按时间14ifxucb1#
对象属性名称始终是字符串。在代码的第一个版本中,您在循环中使用数字,JavaScript在访问对象属性时将数字转换为字符串。因为它是数字,所以
i + 1
将是数字加法。在第二个版本中,你的代码直接使用属性名,所以它们在循环中是字符串,因此
i + 1
意味着字符串连接。