首页 > 开发 > CSS > 正文

for 循环与这个自定义方法 forEach 的效果为什么不一样

2017-09-12 09:34:58  来源: 网友分享

网上的一个 3D 标签云的插件,其中用到了数组循环方法 forEach ,不过我把循环改成 for 循环之后,效果就会出错。
这是原本的 forEach 的代码:

Array.prototype.forEach = function(callback){    for(var i=0;i<this.length;i++){        callback.call(this[i]);    }}function rotateY(){    var cos = Math.cos(angleY);    var sin = Math.sin(angleY);    tags.forEach(function(){        var x1 = this.x * cos - this.z * sin;        var z1 = this.z * cos + this.x * sin;        this.x = x1;        this.z = z1;    })}

我改成了 for 循环后就完全不对。

function rotateY(){    var cos = Math.cos(angleY);    var sin = Math.sin(angleY);    for( var i=0 ,length=tags.length;i<length;i++){        var x1 = tags[i].x * cos - tags[i].z * sin;        var z1 = tags[i].z * cos + tags[i].x * sin;        tags[i].x = x1;        tags[i].z = z1;    }}

这是这个 demo 的完整代码 http://codepen.io/zengkan0703...
这是我修改成 for 循环的效果 http://codepen.io/zengkan0703...
更新:由于粗心把 + 写成了 - ,太尴尬了,耻辱柱。

解决方案

你这错误,跟你的描述并不一样。太粗心了。