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