w3schools javascript bluebird compound-assignment

let javascript w3schools



¿Qué significa la asignación compuesta de let/const? (1)

Hay un artículo de asesinos de optimización en la wiki de la biblioteca de Bluebird. En este artículo hay una frase:

Actualmente no es optimizable:
...
Funciones que contienen una asignación compuesta de let
Funciones que contienen una asignación const de compuesto.

¿Qué significa la asignación compuesta y la asignación constada compuesta? En ECMAScript 5.1 hubo una noción de asignación compuesta, pero en ECMAScript 2015, parece que no hay noción de ninguna asignación compuesta, solo hay asignaciones regulares.

Sospecho que la asignación compuesta de let y const, es solo una asignación compuesta después de la declaración. Por ejemplo:

let n = 1; n += 4;

Estoy en lo cierto


Sí, eso parece ser exactamente lo que significa. Tuve el siguiente código (líneas adicionales irrelevantes eliminadas):

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

updatePlayer generó una advertencia, No optimizado: no admitido permite la asignación compuesta , en la pestaña de Perfiles de Chrome, así que probé = ... + lugar de += y obtuve una mejora de rendimiento significativa y constante.

jsPerf muestra que las asignaciones compuestas son extremadamente lentas en Chrome 49.0.2623 , en comparación con + ... = o var ! Supongo que esto se solucionará en una versión futura, ya que ni Firefox ni IE11 ni Edge están afectados, y dado que Google aparentemente tiene conocimiento del problema.