JavaScript for…in循环不起作用-Object property is not defined
在JavaScript中,for…in循环是一种特殊的循环,它枚举对象的所有键(对象属性名称)。在每次迭代中,一个新的属性字符串被赋值给循环变量。
错误:
Uncaught ReferenceError: Object property is not defined
如果我们尝试将这个循环变量与一个非字符串变量进行比较,将会生成一个 ReferenceError,而只需在与 for…in 循环变量进行比较时使用字符串格式的变量即可解决此问题。下面讨论了两种可能的错误情况:
示例 1: 将 for…in 循环变量与非字符串变量进行比较
在这里,我们创建了一个名为“GeeksforGeeks”的对象。我们使用 for…in 循环查找一个名为“about”的属性,并将其记录在控制台中。但在这里,about 不是字符串格式,因此在这段代码中,我们将得到一个 Reference Error。
Javascript
<script>
// A GeeksforGeeks object
const GeeksforGeeks = {
about: "Computer Science portal for geeks",
problems_count: 2690,
used_by: ['Professionals', 'Students'],
used_for: ['DSA Practice', ' Articles & Editorials']
}
for (key in GeeksforGeeks) {
if (key === about) {
// ReferenceError:'about' is not defined
console.log(`GeeksforGeeks is a
${GeeksforGeeks[key]}.`)
break;
}
}
</script>
输出:

解决方案: 在上述示例中,只需将’about’转换为字符串即可将引用错误从代码中删除。
Javascript
<script>
// A GeeksforGeeks object
const GeeksforGeeks = {
about: "Computer Science portal for geeks",
problems_count: 2690,
used_by: ['Professionals', 'Students'],
used_for: ['DSA Practice', ' Articles & Editorials']
}
for (key in GeeksforGeeks) {
if (key === "about") {
// Used string to compare with
// loop variable
console.log(`GeeksforGeeks is
a ${GeeksforGeeks[key]}.`)
break;
}
}
</script>
输出结果:

示例2: 将非字符串参数传递给函数
如果我们将非字符串参数传递给函数,并将其与循环变量进行比较,也可能会出现这种错误。在下面的代码中,我们在调用函数“fun”时使用了非字符串参数“used_for”。
JavaScript
<script>
// A GeeksforGeeks object
const GeeksforGeeks = {
Desc: "Computer Science portal for geeks",
Problems_count: 2690,
used_by: ['Professionals', 'Students'],
used_for: ['DSA Practice', ' Articles & Editorials']
}
// Call the gfg method
fun(GeeksforGeeks, used_for)
// A method to console info about GeeksforGeeks
function fun(obj, uses) {
for (key in obj) {
if (key === uses) {
console.log(`GeeksforGeeks is
used for ${obj[uses]}.`)
}
}
}
</script>
输出:

解决方案: 在调用函数“fun”时,以字符串格式传递参数“used_for”将解决错误。
JavaScript
<script>
// A GeeksforGeeks object
const GeeksforGeeks = {
Desc: "Computer Science portal for geeks",
Problems_count: 2690,
used_by: ['Professionals', 'Students'],
used_for: ['DSA Practice', ' Articles & Editorials']
}
// Call the gfg method
fun(GeeksforGeeks, "used_for")
// A method to console info about GeeksforGeeks
function fun(obj, uses) {
for (key in obj) {
if (key === uses) {
console.log(`GeeksforGeeks is
used for ${obj[uses]}.`)
}
}
}
</script>
输出:

极客教程