JavaScript for…in循环不起作用-Object property is not defined

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> 

输出:

JavaScript for...in循环不起作用-Object property is not defined

解决方案: 在上述示例中,只需将’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> 

输出结果:

JavaScript for...in循环不起作用-Object property is not defined

示例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> 

输出:

JavaScript for...in循环不起作用-Object property is not defined

解决方案: 在调用函数“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> 

输出:

JavaScript for...in循环不起作用-Object property is not defined

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程