javascript数组赋值操作

最近在司徒正美的《javascript框架设计》,在里面发现了一个段代码

1 ......
2 
3             var _len = arr1.length;
4             while (_len) {
5                 arr2[--_len] = arr1[_len];
6             }
7 
8 ......

这是一个数组间赋值的操作,咋一看,之前还没碰到这样的写法。平时我个人都是这样写的。

1 function assignment2(arr1, arr2) {
2             for (var i = 0,_len = arr1.length; i < _len; i++) {
3                 arr2[i] = arr1[i];
4             }
5         }

这两个哪一个的效率更高呢?

为此我试着比较了一下。

1 function consoleRunTime() {
2             this.ti = 0;
3             this.start = function () {
4                 this.ti = new Date().getTime();
5             }
6             this.end = function () {
7                 console.log(new Date().getTime() - this.ti);
8             }
9         }

在chrome的控制台下,处理一个长度为10000000的数组,第一类方法耗时2091ms,第二类耗时565ms。运行多次比较,第二类方法的耗时明显要比第一类少。这是为什么呢?

分析了一下,性能的瓶颈应该来至

1、while(_len)这个逻辑判断,在方法内部_len是整形,判断的时候需要转化为布尔型(效果等同于!!_len),这就比i<_len这个判断多做了处理。

至于深层次的内容,个人也不是很清晰,哎,学业不精啊,希望哪位大大可以帮忙解答啊!!

 

转载于:https://www.cnblogs.com/kbqncf/p/3709361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值