Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does compound let/const assignment mean?

There is an article Optimization killers in wiki of Bluebird library. In this article there is a phrase:

Currently not optimizable:
...
Functions that contain a compound let assignment
Functions that contain a compound const assignment

What does compound let assignment and compound const assignment mean? In ECMAScript 5.1 there was notion of compound assignment but in ECMAScript 2015, it seems there is no notion of any compound assignment there is only regular assignments.

I suspect that compound let and const assignment, it is just compound assignment after declaration. For example:

let n = 1;
n += 4;

Am I right?

like image 637
Alexander Myshov Avatar asked Jan 04 '16 16:01

Alexander Myshov


1 Answers

Yes, that seems to be exactly what it means. I had the following code (irrelevant additional lines removed):

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

updatePlayer generated a warning, Not optimized: Unsupported let compound assignment, in Chrome's Profiles tab, so instead of l += r I tried l = l + r and got a significant, consistent performance improvement.

jsPerf shows that let compound assignments are indeed extremely slow in Chrome 49.0.2623, compared to l = l + r or var! I guess this will be fixed in a future version, since neither Firefox nor IE11 nor Edge is affected, and since Google apparently know about the issue.

like image 158
Simon Alling Avatar answered Oct 31 '22 18:10

Simon Alling