当前位置:  开发笔记 > 编程语言 > 正文

复合let/const赋值是什么意思?

如何解决《复合let/const赋值是什么意思?》经验,为你挑选了1个好方法。

在Bluebird图书馆的wiki中有一篇文章优化杀手.在本文中有一个短语:

目前不可优化:
...
包含复合的
函数let赋值包含复合const赋值的函数

复合赋值和复合const赋值是什么意思?在ECMAScript 5.1中有复合赋值的概念,但在ECMAScript 2015中,似乎没有任何复合赋值的概念,只有常规赋值.

我怀疑复合let和const赋值,它只是声明后的复合赋值.例如:

let n = 1;
n += 4;

我对吗?



1> 小智..:

是的,这似乎正是它的意思.我有以下代码(删除了无关的附加行):

function updatePlayer(player) {
    let direction = player.getDirection();
    if (player.isPressingLeft()) {
        direction += angleChange;
    }
    if (player.isPressingRight()) {
        direction -= angleChange;
    }
    player.setDirection(direction);
}

updatePlayer在Chrome的" 个人档案"标签中生成了一个警告,未优化:不支持让复合分配,所以我尝试了而不是获得了显着,一致的性能提升.= ... ++=

jsPerf表明Chrome 49.0.2623中的let复合赋值确实非常慢,与+ ... =or 相比var!我想这将在未来的版本中修复,因为Firefox和IE11以及Edge都没有受到影响,而且谷歌显然知道这个问题.


这似乎是正确的,但那么什么是"复合`const`赋值",因为`const`声明不能重新赋值?
为什么这样做*仍然*杀死优化?我一直在`--trace_opt --trace_deopt`中看到这个.复合赋值语句如"+ ="太简单太方便了.
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有