在 JavaScript 中使用 for..in 循环的缺点
在本文中,我们将了解使用for..in循环的缺点以及如何解决这些问题。
使用 for..in 循环的缺点:
原因 1:当您使用原型在数组或对象中添加属性时,以及在迭代数组 x 时与该属性无关的任何其他数组arr时,您将获得该属性。
示例:您添加了一个属性myCustomProp 到 数组.原型。
句法:
Array.prototype.myCustomProp = "Hello World";
现在创建一个数组x并为其分配一些值并遍历for..in循环。
Javascript
Javascript
Javascript
Javascript
输出 :
1
2
3
4
5
"Hello World"
解决方案:您可以使用hasOwnProperty()解决此问题 方法。
Javascript
输出 :
1
2
3
4
5
原因 2: for..in循环忽略了数组的未定义值。假设您创建了一个空数组arr并将一些项目分配给arr[0]、arr[3]、arr[5]、 这意味着arr[1], arr[2], arr[4]是undefined ,但for..in循环会忽略它们。
例子:
Javascript
输出 :
- 使用 for 循环:
"A" undefined undefined "D" undefined "F"
- 使用 for..in 循环:
"A" "D" "F"
一个简单的 for循环打印数组的所有元素,包括未定义但for..in循环忽略所有未定义的值。但这仅适用于其值未定义的数组,但当数组中明确存在未定义时, for..in循环不会忽略它们。
Javascript
输出 :
undefined
undefined
undefined
Hello World