最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:09:14
文档

IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧

IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧:以文谨记在此被浏览器版本差异的坑。 代码如下: Array.prototype.Contains = function (str) { if (!str) return false; for (var i = 0; i if (this[i] == str) { return true; } } return false; } var
推荐度:
导读IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧:以文谨记在此被浏览器版本差异的坑。 代码如下: Array.prototype.Contains = function (str) { if (!str) return false; for (var i = 0; i if (this[i] == str) { return true; } } return false; } var


以文谨记在此被浏览器版本差异的坑。
代码如下:
Array.prototype.Contains = function (str) {
if (!str)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] == str) {
return true;
}
}
return false;
}
var tmp = new Array();
tmp.push("1");
tmp.push("2");
tmp.push("3");
alert("遍历属性");
for ( var i in tmp ) {
alert(tmp[i]);
}
alert("遍历数组");
for ( var i=0;ialert(tmp[i]);
}

如果是非IE8浏览器,例如(IE7、IE9、Chrome、FF,仅测试这几种)
通过属性和数组遍历,其结果是一样的。
但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下。

之所以发现这个差异,也是因为解决了一个诡异的bug,有同事在代码里面使用for ( var i in tmp )这种方式来遍历数组的每个元素,如果正好对Array定义了原型链方法,则会发生这个问题。
所以建议:如果遍历数组元素,还是应该采用标准的写法 for ( var i=0;i

文档

IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧

IE8对JS通过属性和数组遍历解析不一样的地方探讨_javascript技巧:以文谨记在此被浏览器版本差异的坑。 代码如下: Array.prototype.Contains = function (str) { if (!str) return false; for (var i = 0; i if (this[i] == str) { return true; } } return false; } var
推荐度:
标签: 一样的 js 循环
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top