Javascript中的循环陷阱介绍
我们都知道在Javascript中提供迭代对象有两种方式:(1)循环;
(2)在循环中;
对于每个人来说,使用for循环迭代数组对象是很常见的。在循环中,你必须注意它。为什么这么说You listen to me explain....
Javascript提供了一个特殊的循环(用于…在循环中,用于迭代对象的属性或数组的每个元素。在循环中的循环计数器是一个字符串,而不是一个数字。它包含当前属性的名称或当前数组元素的索引。
案例1:
复制代码代码如下所示:
在通过对象属性的循环中使用..
varperson = {
名称:admin
年龄:21岁,
地址:山东
};
对于(变人){
Console.log (I);
}
执行的结果如下:
名称
年龄
地址
当一个对象被遍历时,变量i是循环计数器作为对象的属性名。
复制代码代码如下所示:
在循环中使用..遍历数组。
vararray = { 管理
对于(数组中的变量){
console.log(我);
}
实施结果:
零
一
二
当遍历数组时,变量i是当前数组元素的循环计数器的索引。
案例二:
但现在看来…在循环中非常好,但不要太高兴地看下面的例子:
复制代码代码如下所示:
数组
将一个name属性添加到数组原型中
阵列。原型。名称=zhangsan;
对于(var在数组中){
警报(数组{ });
}
运行结果:
行政
经理
DB
zhangsan
嘿,奇迹,多出来的一张三平白无故
现在,使用for循环会是什么样子呢
复制代码代码如下所示:
vararray = { 管理
将一个name属性添加到数组原型中
array.prototype.name =zhangsan;
对于(var i = 0;i < array.length;i++){
警报(数组{ });
};
运行结果:
行政
经理
DB
哦,现在我明白了..在循环遍历的方法和属性的一个原型,这可能会导致代码中的错误。为了避免这个问题,我们可以使用对象的hasownproperty()来避免这个问题的方法。如果对象的属性或方法不能继承,那么hasownproperty()方法返回true。这里的检验不涉及其他对象继承的属性和方法,只检查在特定的对象本身的属性直接创造的。
案例三:
复制代码代码如下所示:
vararray = { 管理
阵列。原型。名称=嶂山;
对于(数组中的变量){
如果不是直接创建的对象本身属性(即,属在原型 /属性)中,则跳过显示。
如果(!Array.hasOwnProperty(我)){
继续;
}
警报(数组{ });
}
运行结果:
行政
经理
DB
一切都像开头一样好。哦,我不知道同志们做了些什么,看看是否有一种消除乌云和看到晴天的感觉。