En el modo "usar estricto", esta función debería ser [ventana de objeto] en lugar del objeto que llama a la función en modo normal. Pero cuando intento hacer una prueba de concepto, no funciona, estoy ...

1
Light Yagami 15 mar. 2021 a las 08:14

1 respuesta

La mejor respuesta

Con respecto a this, el modo estricto significará que las funciones llamadas sin ningún contexto de llamada (funciones independientes que no están en un objeto) recibirán un this de undefined en su lugar del objeto global.

Por ejemplo, podría ver lo diferente con la función a continuación:

function fn() {
  // use strict here to see the difference
  console.log(this);
}
fn();

El modo estricto no tiene ningún efecto sobre el this de las funciones que se llaman con un contexto de llamada. Aquí, ambos botones se denominan con un contexto de llamada del botón, por lo que El botón en el que se hace clic es el this resultante dentro de los controladores, sin importar si se usa el modo estricto o no.

Nada que ver con VSCode: así es como funcionarán las cosas en cualquier lugar.

function name1() {
   document.querySelectorAll("p")[0].innerHTML += this;
}
function name2() {
   "use strict";
   document.querySelectorAll("p")[0].innerHTML += this;
}
document.querySelectorAll("button")[0].addEventListener("click", name1);
document.querySelectorAll("button")[1].addEventListener("click", name2);
<p>p</p>
<button>b1</button>
<button>b2</button>
3
CertainPerformance 15 mar. 2021 a las 05:18