Este es un ejemplo bastante corto. Copio y pego el siguiente código en un archivo, lo guardo y lo abro. Funciona bien en Chrome, falla en ie 11.

¡La salida en la consola no tiene sentido! ¿Que esta pasando? ¿Te has topado con algún bicho extraño?

Test.b claramente no está indefinido, ya que es accesible por el analizador JSON y por la evaluación directa de objetos.

Además, cambiar el orden de las variables en la función de registro no hace nada para cambiar que test.b no esté definido.

<!DOCTYPE html>
<html>
<head>
   <title>wtf</title>
   <script>
      var test = {a:1,b:{c:1}}
      console.log(test,JSON.stringify(test),test.b);
    </script>
</head>
<body>
    WTF IE
</body>
</html>

nonsense

6
Noishe 28 ago. 2014 a las 11:03

3 respuestas

La mejor respuesta

Microsoft ha aceptado un informe de error.

http://connect.microsoft.com/IE/feedbackdetail/view/958116/console-log-bug-on-11-0-9600-17239-displays-undefined-undefined-for-objects-and-arrays-which-are-properties-of-objects

Entonces, la respuesta parece ser, en este momento, que es un error.

2
Noishe 23 sep. 2014 a las 14:08

Recientemente me encontré con este problema también.

El problema era que la página en la que estaba trabajando tenía el modo de compatibilidad establecido en IE8.

<meta http-equiv="X-UA-Compatible" content="IE=8" >

Creo que IE8 no tenía consola, por lo que console.log no estaría definido.

0
Jgood 5 sep. 2016 a las 00:46

Debe escribir su propia función de registro recursivo, porque el navegador solo inicia sesión en el primer nivel. Registrar todo de forma predeterminada costaría demasiado rendimiento y memoria para el navegador. Ver: función de registro recursivo

0
Community 23 may. 2017 a las 12:33