javascript console.log

javascript - ¿Cuál es la diferencia entre window.console.log y console.log



(3)

En un contexto de navegador normal, no hay diferencia. console es una variable global, y todos los globales son propiedades del objeto window .

console.log(console.log==window.console.log) // true

Hay algunas advertencias, como cuando no se ejecuta en el navegador, o si la variable de la consola ha sido reasignada. TJ Crowder lo explica muy bien.

Acabo de pasar por una entrevista. La primera pregunta que me hizo fue ¿Qué es console.log() ? Respondí con tanta confianza. De nuevo,

La segunda pregunta era, ¿cuál es la diferencia entre window.console.log() y console.log() . Estaba sin palabras. Intenté buscar en Google y Stack Overflow. No encontré una publicación tan útil para entender la diferencia entre ellos.

Cualquier pensamiento es muy apreciado.


No hay diferencia entre window.console.log y window.console.log . Tener un cheque en MDN . Ellos citan claramente -

Se puede acceder al objeto de la Consola desde cualquier objeto global, Ventana en los ámbitos de navegación, WorkerGlobalScope y sus variantes específicas en los trabajadores a través de la consola de propiedad. Está expuesto como Window.console , y puede ser referenciado simplemente como console .


Además de esto, la pregunta también puede haber sido:

¿Cuál es la diferencia entre window.console y window.console ?

La respuesta para esto sería-

console.log se usa para iniciar sesión (como usted sabe).

window.console verifica si la consola está disponible (valor truthy ) para que podamos iniciar sesión a continuación (en el caso de los navegadores móviles, no admiten el depurador / consola)

Patrón común en el código para esto es-

window.console && console.log(open_date);

Que es básicamente un código corto para -

if( window.console ) { console.log( open_date ); }


Si se refiere al entorno de JavaScript del navegador predeterminado, efectivamente no hay una window y console provistas que no hayan sido ocultadas o reasignadas.

En el entorno de JavaScript predeterminado del navegador, la window es un elemento global que hace referencia al objeto global, que también es el objeto de la ventana. El objeto global contiene la mayoría de los globales como propiedades (solía ser todo, pero en ES2015 se modificaron; los globales creados por let , const o class no son propiedades del objeto global). Pero eso no es cierto en la mayoría de los entornos que no son de navegador (NodeJS, por ejemplo, utiliza global lugar de window ), o incluso en algunos entornos de navegador no predeterminados (como el entorno de un trabajador web, que no tiene window como pueden) t acceder a la ventana). Por lo tanto, en entornos donde la window no está definida, window.console.log fallará donde window.console.log no lo haría (siempre que el entorno proporcione una console global).

Para entender la diferencia, trabajemos cada uno de ellos a través de:

console.log(...) significa:

  1. El motor de JavaScript tiene que buscar un enlace para la console identificadores comenzando con el contexto de ejecución actual, luego el siguiente, luego el siguiente, hasta que lo encuentre en el ámbito global.
  2. Luego busca la propiedad de log en el objeto resultante.
  3. Entonces lo llama

window.console.log(...) significa:

  1. El motor de JavaScript tiene que buscar un enlace para la window identificador comenzando con el contexto de ejecución actual, luego el siguiente, luego el siguiente, hasta que lo encuentre en el ámbito global.
  2. Luego busca la propiedad de la console en el objeto resultante.
  3. Luego busca la propiedad de log en el objeto resultante.
  4. Entonces lo llama

Entonces, por ejemplo, aquí hay un ejemplo donde la console ha sido sombreada, y entonces console.log falla mientras que window.console.log funciona:

function foo() { var console = 42; try { console.log("You WON''T see this."); } catch (e) { } try { window.console.log("You WILL see this."); } catch (e) { } } foo();