for-in
在JS中,for-in语句可以用来遍历数组或对象的属性
for ( 键名 in 被遍历的对象 ) {
// 需要执行的代码
}
当被遍历的对象为Object类型时,键名即该对象的属性名;当被遍历的对象为Array数组时候,键名为数组的索引值index。
那么当被遍历的对象是,number, string, boolean, undefined, null类型的数据的时候,会出现什么情况呢?
for-in遍历各类JS数据
var arr = [
123,
"str",
true,
undefined,
null,
new String('strObj'),
{
"obj-property": 24524,
"obj-method": function (){}
},
[123,4786,65],
function(){console.log('This is function object');}
];
function forin( param ){
var flag = false;
console.log("=========="+param+"==========")
for (var key in param){
console.log(key+"----"+param[key]);
flag = true;
}
if (flag) {
console.log("遍历了");
}
console.log("=========="+param+"==========")
}
for (var i = 0; i< arr.length; i++){
forin(arr[i]);
}
对于number,boolean,undefined,null数据类型
没有进入到for-in遍历,也没有执行for-in语句中的代码段。
对于string和new String
成功进入到for-in遍历中,遍历时的键名为字符的索引值。
对于Object对象
成功进入到for-in遍历中,遍历时的键名为对象的属性名。
对于Array数组对象
成功进入到for-in遍历中,遍历时的键名为数组的索引值
对于Function函数对象
没有进入到for-in遍历,也有没执行for-in语句中的代码段;即使改为命名函数,也是如此。