comportamiento de elevación cambiado entre cromado 48 y 49?

if (true) { function test() { console.log(true); } } else { function test() { console.log(false); } } test() 

Chrome 48 (y el nodo <5.9.1) registra falso, el logging de Chrome 49 (y Firefox) verdadero. Supongo que se optimizaron al no elevarse desde la twig de falsy, pero eso puede romper las aplicaciones existentes.
¿Cuál es correcto según la especificación?

One Solution collect form web for “comportamiento de elevación cambiado entre cromado 48 y 49?”

De acuerdo con https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function , el estándar ECMAScript es volver a elevar las declaraciones de function en instrucciones de bloque para la creación condicional, que es lo que Chrome 49 parece estar haciendo.

Sin embargo, antes de ECMAScript 6, el comportamiento de declarar funciones en bloques condicionales no estaba definido: los browseres podían usar ese mecanismo de creación condicional, levantar la primera (o última) function que ven (que es lo que Chrome 48 hace), no izar ni function y devuelve un error en la test(); , o incluso hacer algo no relacionado con JavaScript que podría terminar prendiendo fuego a tu computadora.

  • Inyectar CSS para la extensión de cromo
  • funcionar como marcador google chrome
  • Cómo determinar si Onbeforeunload ha sido causado onclick en un enlace en Chrome
  • ¿Se puede vincular la captación previa para almacenar en caching una respuesta de API JSON para una request de XHR posterior?
  • Herramientas de Chrome Dev: vea todos los oyentes de events utilizados en la página
  • ¿No se cargó el file de extensión de Chrome?
  • El video HTML5 no oculta los controles en modo pantalla completa en Chrome
  • Agregar múltiples dominios externos en la extensión de Chrome
  • descarga del file encodeURI - locking del browser
  • Error de initialization de idpiframe de la API de Google Auth Javascript en Chrome
  • Android establece scrollLeft mientras que la actualización del contenido en el evento de desplazamiento no actualiza la position de la barra de desplazamiento
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.