gpt4 book ai didi

javascript - 使用 for( ... in ...) 循环迭代数组时出现意外输出

转载 作者:行者123 更新时间:2023-11-28 12:47:52 25 4
gpt4 key购买 nike

<html>
<head>
<script type="text/javascript">


Array.prototype.getUnique = function () {
var o = new Object();
var i, e;
for (i = 0; e = this[i]; i++) {o[e] = 1};
var a = new Array();
for (e in o) {a.push (e)};
return a;
}

function Perform(){
var arr = new Array();

arr[0] = "hello";
arr[1] = "world";

for(i in arr){
console.log(arr[i]);
}
}

</script>
</head>
<body onload="Perform()">
</body>
</html>

上面代码在控制台的结果是

hello
world
function()

最后一个function()来自哪里?

最佳答案

JavaScript 中的

for ... in 不迭代数组。忘记你的其他编程语言吧——这就是 JavaScript,这种语法相似的语言意味着完全不同的事情

for ... in 迭代对象的所有属性,包括其原型(prototype)链中的所有属性。

因此,始终使用 hasOwnProperty 来检查该属性是否在对象本身上定义:

for (var name in obj) {
if (obj.hasOwnProperty(name)) {
doSomething(obj[name]);
}
}

不应该使用for ... in来迭代数组。请改用索引。

搜索 SO 以查找有关此主题的数百个类似问题。

关于javascript - 使用 for( ... in ...) 循环迭代数组时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5591172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com