编程语言
首页 > 编程语言> > javascript中vs与var之间的差异

javascript中vs与var之间的差异

作者:互联网

参见英文答案 > For-each over an array in JavaScript?                                    33个
我在PHP中填充关联数组并在JS函数中访问该数组.我使用json_encode()将PHP数组转换为JS数组.我使用IE 8来运行此应用程序.在一些使用IE 8 for(;;)的机器上工作但在其他机器上失败.在IE 8 for(var in)工作的一些机器中,但在其他机器中失败.以下代码有什么区别?

for (var k = 0; k < ruleList.length; k++){ //do something } 

for (var x in ruleList){ //do something }

解决方法:

好吧,因为(i in x)适用于数组和对象

var x = [1, 2, 3];
for(var i in x) console.log(x[i]);

var o = {1:1, 2:2, 3:3};
for(var i in o) console.log(o[i]);

而for(;;)仅适用于数组

var x = [1, 2, 3];
for(var i=0; i<x.length; i++) console.log(x[i]);

var o = {1:1, 2:2, 3:3};
for(var i=0; i<o.length; i++) console.log(x[i]); // returns undefined because object o doesn't have property length

但是您可以使用Object.keys来获取对象的键数组

var o    = {1:1, 2:2, 3:3};
var keys = Object.keys(o);
for(var i=0; i<keys.length; i++) console.log(o[keys[i]]);

通常的做法是使用(i in x)表示对象和(;;)表示数组

标签:javascript,for-loop,for-in-loop
来源: https://codeday.me/bug/20190702/1354198.html