javascript - variable - use the function form of use strict
JavaScript ''modo estricto'' no funciona como se esperaba? (1)
var test = function() {
''use strict'';
var mapNames = {
''name'': ''City Name:'',
''coord.lat'': ''Latitute:''
};
for (var key in mapNames) {
var names;
if (mapNames[key]) {
name = mapNames[key];
} else {
name = key;
}
}
console.log(name);
}
test();
En el código anterior, cometí un error al declarar names
variables y usar el name
lugar. Pensé que el modo ''estricto'' lo atraparía pero no lo hizo. ¿No debería esto arrojar un error en este caso?
Ya existe una variable global de name
, no relacionada con su código; representa el nombre de la ventana actual, por lo que está asignando a una variable ya existente.
window.name; // the name of the current window for cross-window communication
Todo en la window
se declara como global, por lo que no se trata de errores de referencia, ya que se asigna a una variable en un ámbito externo.
Super confuso: d
"use strict"
evitaría la definición de nuevas variables globales, aquí estamos realizando una asignación a una variable existente, piense que el name
está en el ámbito global, como window.Blob
, window.console
, etc.