objeto metodos log comando javascript firefox console firebug

javascript - metodos - ¿Cuál es la diferencia entre console.log() y console.debug() de FireBug?



objeto console (2)

En Firebug 1.6a12 obtengo

debug [0, 3, 1, 2] blog.php (line 80) log [0, 3, 1, 2] debug [0, 2] blog.php (line 85) log [0, 2]

Las líneas de debug() incluyen un enlace a la línea de origen de la línea console.debug() .

Un código muy simple para ilustrar la diferencia.

var x = [0, 3, 1, 2]; console.debug(''debug'', x); console.log(''log'', x); // above display the same result x.splice(1, 2); // below display kind of a different result console.debug(''debug'', x); console.log(''log'', x);

texto alternativo http://sixbytesunder.com/stuff/firebug_console.png

El valor de javascript es exactamente el mismo, pero console.log () lo muestra de forma un poco diferente a como lo hacía antes de aplicar el método splice() . Debido a esto, perdí unas cuantas horas porque pensé que splice está actuando de forma divertida haciendo que mi matriz sea multidimensional o algo así.

Solo quiero saber por qué funciona así. ¿Alguien sabe? :)


Si nos fijamos en la documentación, dice :

La consola conoce cuatro tipos diferentes de mensajes, que se describen a continuación [...]

Consulte también la API de la consola para obtener más información sobre los diferentes comandos.

Una mirada en esa página se shows en console.log :

Si los objetos se registran, se escribirán no como texto estático, sino como hipervínculos interactivos en los que se puede hacer clic para inspeccionar el objeto en las pestañas HTML, CSS, Script o DOM de Firebug.

Entonces, creo que antes del splice , la matriz sigue siendo internamente una Array (lo sé, es un tipo de objeto), pero después de la operación, se obtiene un objeto general, al menos internamente. Sé que esta es una explicación débil, pero Firebug tiene un comportamiento más extraño en la consola.

Por cierto, la especificación ECMAScript no es útil, pero podemos leer en la sección sobre Array.prototype.splice (§ 15.4.4.12):

La función de splice es intencionalmente genérica; no requiere que su valor sea un objeto Array. Por lo tanto, se puede transferir a otros tipos de objetos para utilizarlos como método. Si la función de splice se puede aplicar con éxito a un objeto host depende de la implementación.