tal*_*ony 4 javascript typeof for-in-loop array-key
我注意到在Javascript中,在for..in循环中用作索引的变量将始终是一个string偶数,即使我按以下方式定义它:
var s_array = new Array();
s_array[0] = 'foo';
s_array[1] = 'bar';
for(i in s_array){
alert(typeof(i)); // String
}
Run Code Online (Sandbox Code Playgroud)
为什么它被认为是一个string而不是一个number?
该for(x in y)语法是为了迭代的对象(的性质不是数组的索引),和属性名称总是存储为字符串.
它也适用于数组的事实是数组元素作为数组对象属性的副作用.
要了解其中的差异,请考虑以下代码:
var s_array = new Array();
s_array[0] = 'foo';
s_array[1] = 'bar';
s_array['foo'] = 'bar';
console.log("Object:");
for(i in s_array) {
console.log(i);
}
console.log("Array:");
for(var i = 0, l = s_array.length; i < l; i++) {
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
它提供以下输出:
Object:
0
1
foo
Array:
0
1
Run Code Online (Sandbox Code Playgroud)
foo对象上有一个属性,但它实际上并不是数组中的元素.
| 归档时间: |
|
| 查看次数: |
465 次 |
| 最近记录: |