¿Qué es console.log?

Respuestas:

455

No es una función de jQuery, sino una función para fines de depuración. Por ejemplo, puede registrar algo en la consola cuando sucede algo. Por ejemplo:

$('#someButton').click(function() {
  console.log('#someButton was clicked');
  // do something
});

Entonces verías #someButton was clicked en la pestaña "Consola" de Firebug (o la consola de otra herramienta, por ejemplo, el Inspector web de Chrome) cuando haría clic en el botón.

Por algunas razones, el objeto de la consola podría no estar disponible. Luego, puede verificar si es así; esto es útil ya que no tiene que eliminar su código de depuración cuando lo implementa en producción:

if (window.console && window.console.log) {
  // console is available
}
Jan Hančič
fuente
17
Las herramientas para desarrolladores de Google Chrome también tienen una consola integrada.
RobertPitt
8
"Esto es útil ya que no tiene que eliminar su código de depuración cuando lo implementa en producción" <- ¿Qué sucede si un usuario final abre Firebug?
AbdullahC
66
también es útil para no permitir que IE arroje un error para la consola no definida
Alan Whitelaw
44
En mi opinión, es mejor que comprobar cada vez si console.log está disponible, es mejor tener algo como esto: if (typeof (console) == 'undefined') {console = {'log': function () {return}}} En En tal caso, puede escribir console.log cada vez que lo necesite sin verificar la presencia de este.
Enrico Carlesso
12
if (console.log)(o incluso if (console && console.log)) aún arrojará un error si la consola no está disponible. Debe usar window.console(como windowse garantiza que existe) y solo verificar un nivel de profundidad a la vez.
Tgr
226

¡Lugares donde puedes ver la consola! Solo para tenerlos a todos en una respuesta.

Firefox

http://getfirebug.com/

(ahora también puede usar las herramientas de desarrollador integradas de Firefox Ctrl + Shift + J (Herramientas> Desarrollador web> Consola de error), pero Firebug es mucho mejor; use Firebug)

Safari y Chrome

Básicamente lo mismo.

https://developers.google.com/chrome-developer-tools/docs/overview

https://developer.apple.com/technologies/safari/developer-tools.html

explorador de Internet

No olvide que puede usar los modos de compatibilidad para depurar IE7 e IE8 en IE9 o IE10

http://msdn.microsoft.com/en-us/library/ie/gg589507(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/dd565628(v=vs.85).aspx

Si debe acceder a la consola en IE6 para IE7, use el bookmarklet Firebug Lite

http://getfirebug.com/firebuglite/ busque bookmarklet estable

http://en.wikipedia.org/wiki/Bookmarklet

Ópera

http://www.opera.com/dragonfly/

iOS

Funciona para todos los iPhones, iPod touch y iPads.

http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html

Ahora con iOS 6 puede ver la consola a través de Safari en OS X si conecta su dispositivo. O puede hacerlo con el emulador, simplemente abra una ventana del navegador Safari y vaya a la pestaña "Desarrollar". Allí encontrará opciones para que el inspector de Safari se comunique con su dispositivo.

Windows Phone, Android

Ambos no tienen consola incorporada y no tienen capacidad de marcador. Entonces usamos http://jsconsole.com/ type: listen y le dará una etiqueta de script para colocar en su HTML. A partir de entonces, puede ver su consola dentro del sitio web jsconsole.

iOS y Android

También puede usar http://html.adobe.com/edge/inspect/ para acceder a las herramientas del inspector web y la consola en cualquier dispositivo utilizando su conveniente complemento de navegador.


Problemas antiguos del navegador

Por último, las versiones anteriores de IE se bloquearán si usa console.log en su código y no tiene las herramientas de desarrollador abiertas al mismo tiempo. Afortunadamente es una solución fácil. Use el fragmento de código a continuación en la parte superior de su código:

 if(!window.console){ window.console = {log: function(){} }; } 

Esto verifica si la consola está presente, y si no, la establece en un objeto con una función en blanco llamada log. De esta manera, window.console y window.console.log nunca es verdaderamenteundefined.

Fresheyeball
fuente
26
Corrígeme si está equivocado, pero creo que no hay necesidad de Firebug en Firefox para ver la consola, solo haz clic en Ctrl + Shift + J (Herramientas> Desarrollador web> Consola de error)
Dane411
44
@ Dane411 esto es cierto, pero firebug es mejor y se usa más comúnmente.
Fresheyeball
3
@Fresheyeball Alguien tiene que limpiar toda la basura, pero creo que en algún momento se vuelve menos interesante cosechar esas repeticiones y realmente mantener limpia la comunidad.
andlrc
2
Quien haya rechazado esta respuesta, por favor comente. los
votos negativos
hubo window.dump antes de window.console.log. Es mejor que la función de registro vacío
OCTAGRAM
100

Puede ver cualquier mensaje registrado en la consola si utiliza una herramienta como Firebug para inspeccionar su código. Digamos que haces esto:

console.log('Testing console');

Cuando acceda a la consola en Firebug (o cualquier herramienta que decida usar para inspeccionar su código), verá cualquier mensaje que le indique a la función que registre. Esto es particularmente útil cuando desea ver si una función se está ejecutando, o si una variable se pasa / asigna correctamente. En realidad, es bastante valioso para descubrir qué salió mal con su código.

Fibericon
fuente
10
No olvide definirlo primero para evitar errores en IE: stackoverflow.com/a/7585409/318765
mgutt
83

Publicará un mensaje de registro en la consola javascript del navegador, por ejemplo, Firebug o Herramientas para desarrolladores (Chrome / Safari) y mostrará la línea y el archivo desde donde se ejecutó.

Además, cuando genera un objeto jQuery, incluirá una referencia a ese elemento en el DOM, y al hacer clic en él irá a eso en la pestaña Elementos / HTML.

Puede usar varios métodos, pero tenga en cuenta que para que funcione en Firefox, debe tener Firebug abierto, de lo contrario, toda la página se bloqueará. Si lo que está registrando es una variable, una matriz, un objeto o un elemento DOM, también le dará un desglose completo, incluido el prototipo del objeto (siempre es interesante tener un vistazo). También puede incluir tantos argumentos como desee, y serán reemplazados por espacios.

console.log(  myvar, "Logged!");
console.info( myvar, "Logged!");
console.warn( myvar, "Logged!");
console.debug(myvar, "Logged!");
console.error(myvar, "Logged!");

Estos se muestran con diferentes logotipos para cada comando.

También puede usar console.profile(profileName);para comenzar a perfilar una función, script, etc. Y luego finalizarlo conconsole.profileEnd(profileName); y aparecerá en su pestaña Perfiles en Chrome (no lo sé con FF).

Para obtener una referencia completa, visite http://getfirebug.com/logging y le sugiero que lo lea.(Rastros, grupos, perfiles, inspección de objetos).

¡Espero que esto ayude!

Fred
fuente
1
¿Por qué es console.log("x:", x)mejor que console.log("x:" + x)? ¿Es menos propenso a errores ya que a ,es más fácil de leer que a +?
Kevin Meredith
En mi opinión, es un poco más fácil de leer cuando se generan muchas cosas diferentes. En este caso, probablemente debería estar usando +estrictamente, pero quería mostrar que también puede usar comas en las funciones de la consola. Además, evita problemas si ambas variables son enteros o matrices.
Fred
55
console.log("x:", x)es significativamente mejor, porque cuando xes objeto o matriz (o cualquier cosa menos cadena), se muestra correctamente, sin conversión a cadena.
Josef Kufner
34

No hay nada que ver con jQuery y si quieres usarlo te aconsejo que lo hagas

if (window.console) {
    console.log("your message")
}

Para que no rompa su código cuando no está disponible.

Como se sugiere en el comentario, también puede ejecutarlo en un solo lugar y luego usarlo de console.logmanera normal

if (!window.console) { window.console = { log: function(){} }; }
Baptiste Pernet
fuente
18
¿Puedo recomendar en su lugar hacerlo if(!window.console){ window.console = function(){}; }en un lugar, luego usar console.log como de costumbre?
Fresheyeball
23

console.logno tiene nada que ver con jQuery. Es un objeto / método común proporcionado por los depuradores (incluidos el depurador de Chrome y Firebug) que permite que un script registre datos (u objetos en la mayoría de los casos) en la consola de JavaScript.

Quentin
fuente
19

console.logregistra información de depuración en la consola en algunos navegadores (Firefox con Firebug instalado, Chrome, IE8, cualquier cosa con Firebug Lite instalado). En Firefox es una herramienta muy poderosa, que le permite inspeccionar objetos o examinar el diseño u otras propiedades de los elementos HTML. No está relacionado con jQuery, pero hay dos cosas que se hacen comúnmente cuando se usa con jQuery:

  • instale la extensión FireQuery para Firebug. Esto, entre otras ventajas, hace que el registro de los objetos jQuery se vea mejor.

  • cree un contenedor que esté más en línea con las convenciones de código de encadenamiento de jQuery.

Esto generalmente significa algo como esto:

$.fn.log = function() {
    if (window.console && console.log) {
        console.log(this);
    }
    return this;
}

que luego puedes invocar como

$('foo.bar').find(':baz').log().hide();

para verificar fácilmente dentro de las cadenas jQuery.

Tgr
fuente
16

console.log no tiene nada que ver con jQuery.

Registra un mensaje en una consola de depuración, como Firebug.

SLaks
fuente
16

Un punto de confusión a veces es que para registrar un mensaje de texto junto con el contenido de uno de sus objetos usando console.log, debe pasar cada uno de los dos como un argumento diferente. Esto significa que debe separarlos por comas porque si usara el operador + para concatenar las salidas, esto llamaría implícitamente el .toString()método de su objeto. En la mayoría de los casos, esto no se anula explícitamente y la implementación predeterminada heredada por Objectno proporciona ninguna información útil.

Ejemplo para probar en la consola:

>>> var myObj = {foo: 'bar'}
undefined
>>> console.log('myObj is: ', myObj);
myObj is: Object { foo= "bar"}

mientras que si intentas concatenar el mensaje de texto informativo junto con el contenido del objeto obtendrás:

>>> console.log('myObj is: ' + myObj);
myObj is: [object Object]

Tenga en cuenta que console.log, de hecho, toma tantos argumentos como desee.

Thalis K.
fuente
13

Use console.logpara agregar información de depuración a su página.

Muchas personas lo usan alert(hasNinjas)para este propósito, pero console.log(hasNinjas)es más fácil trabajar con él. Usando una alerta emergente aparece un cuadro de diálogo modal que bloquea la interfaz de usuario.

Editar: Estoy de acuerdo con Baptiste Pernet y Jan Hančič en que es una muy buena idea verificar si window.consolese define primero para que su código no se rompa si no hay una consola disponible.

Mark Byers
fuente
12

Un ejemplo: suponga que desea saber qué línea de código pudo ejecutar su programa (¡antes de que se rompiera!), Simplemente escriba

console.log("You made it to line 26. But then something went very, very wrong.")
Gautam Kshatriya
fuente
11

Lo usa para depurar código JavaScript con Firebug para Firefox o la consola JavaScript en los navegadores WebKit .

var variable;

console.log(variable);

Mostrará el contenido de la variable, incluso si se trata de una matriz u objeto.

Es similar a print_r($var);para PHP .

jondavidjohn
fuente
3
Un consejo útil ... Yo siempre incluyen lo siguiente en un archivo JavaScript accesible a nivel mundial: if (!window.console) { window.console = { log : function() {} }; }. Esto le permite olvidarse de eliminar la declaración de depuración ocasional.
Roufamatic
@roufamatic No sé ... añadir código, código de mango que no pertenece, parece una solución bastante terrible ... especialmente cuando buscar / reemplazar es tan fácil ...
jondavidjohn
10

Cuidado: dejar llamadas a la consola en su código de producción hará que su sitio se rompa en Internet Explorer. Nunca lo mantengas desenvuelto. Ver: https://web.archive.org/web/20150908041020/blog.patspam.com/2009/the-curse-of-consolelog

Harlo Holmes
fuente
2
No es que el registro de la consola se rompa si está usando una máquina con Windows, pero romperá su sitio si usa Internet Explorer.
Kris Hollenbeck
Creo que el blog al que se hace referencia en la respuesta ya no existe.
Tsundoku
El enlace original está muerto. He encontrado una copia del archivo web.
Alex
8

En los primeros días, la depuración de JS se realizaba a través de la alert()función; ahora es una práctica obsoleta.

La console.log()es una función que escribe un mensaje para iniciar sesión en la consola de depuración, como Webkit o Firebug. En un navegador no verá nada en la pantalla. Registra un mensaje en una consola de depuración. Solo está disponible en Firefox con Firebug y en navegadores basados ​​en Webkit (Chrome y Safari). No funciona bien en todas las versiones de IE .

El objeto de la consola es una extensión del DOM.

El console.log()debe usarse en el código solo durante el desarrollo y la depuración.

Se considera una mala práctica que alguien deje console.log()en el archivo javascript en el servidor de producción.

jjpcondor
fuente
5

Si su navegador admite depuración, puede usar el método console.log () para mostrar los valores de JavaScript.

Active la depuración en su navegador con F12y seleccione "Consola" en el menú del depurador.

Consola en JavaScript. Intente arreglar o "depurar" un programa JavaScript que no funciona y practique usando el comando console.log (). Existen accesos directos que lo ayudarán a acceder a la consola de JavaScript, en función del navegador que esté utilizando:

Atajos de teclado de la consola de Chrome

Windows: Ctrl+ Shift+ J
Mac: Cmd+ Option+J

Atajos de teclado de la consola Firefox

Windows: Ctrl+ Shift+ K
Mac: Cmd+ Option+K

Atajos de teclado de la consola de Internet Explorer

F12 llave

Atajos de teclado de la consola Safari

Cmd+ Option+C

S. Mayol
fuente
4

console.logespecíficamente es un método para que los desarrolladores escriban código para informar discretamente a los desarrolladores qué está haciendo el código. Se puede usar para alertarlo de que hay un problema, pero no debe reemplazar a un depurador interactivo cuando llega el momento de depurar el código. Su naturaleza asincrónica significa que los valores registrados no representan necesariamente el valor cuando se llamó al método.

En resumen: registre errores con console.log(si está disponible), luego corrija los errores usando su depurador de su elección: Firebug , WebKit Developer Tools (incorporado en Safari y Chrome ), IE Developer Tools o Visual Studio.

outis
fuente
4

Realmente siento que la programación web es fácil cuando empiezo console.loga depurar.

var i;

Si quiero verificar el valor del itiempo de ejecución ...

console.log(i);

puede verificar el valor actual de ien la pestaña de la consola de firebug. Se utiliza especialmente para la depuración.

aksu
fuente
4

Se utiliza para iniciar sesión (cualquier cosa que le pase) a la consola Firebug . El uso principal sería depurar su código JavaScript.

Poelinca Dorin
fuente
4

Además de los usos mencionados anteriormente, console.logtambién puede imprimir en el terminal en node.js. Un servidor creado con express (por ejemplo) puede usar console.logpara escribir en el archivo de registro de salida.

surajck
fuente
2

En los scripts de Java no hay funciones de entrada y salida. Entonces, para depurar el código se utiliza el método console.log (). Es un método para iniciar sesión. Se imprimirá en el registro de la consola (herramientas de desarrollo).

No está presente en IE8 y bajo hasta que abra la herramienta de desarrollo de IE.

NavyaKumar
fuente
2

Esto no es nada para tratar con jQuery. Hace console.log()referencia a la función de registro del objeto de consola, que proporciona métodos para registrar información en la consola del navegador. Estos métodos están destinados únicamente a fines de depuración y no se debe confiar en ellos para presentar información a los usuarios finales.

Aravinda Meewalaarachchi
fuente