-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
agregar hoisting #6
Comments
Creo que este tema lo tengo maomeno asi: Comportamiento Hoisting
Antes de entender el comportamiento hoisting propio del motor de JavaScript, es necesario tener claro que todo comportamiento puede derivar en un "resultado inesperado" si no se conoce el funcionamiento interno de la declaración y la asignación de variables en relación con su propio alcance de acuerdo al En realidad JavaScript no es raro o inesperado, es sólo adaptable e increíble. Si se conocen las perillas adecuadas se puede controlar su comportamiento y eso es algo destacable de su motor. Escarbemos un poco más profundo jugando con la consola:
AsignaciónUna variable se puede usar antes de haber sido declarada:
DeclaraciónEs válido que una variable se declare después de haber sido usada.
Declararación y Asignación
Comportamiento HoistingHoisting no se trata de mover manualmente todas las declaraciones de variables al inicio del ámbito actual. Esto es algo que el motor de JavaScript hace por nosotros, se puede pensar en esta transformación como el resultado de un comportamiento interno propio de JavaScript. Hoisting es más fácil de masticar con un ejemplo: elevarExperimento();
function elevarExperimento() {
invocarOtraFuncion();
// Variable en el ámbito local a la función.
var gato = 'Schrödinger.';
console.log(gato);
}
function invocarOtraFuncion() {
console.log('Por alguna razón alguien me invocó.');
} el cuerpo de la función function elevarExperimento() {
var gato;
invocarOtraFuncion();
gato = 'Schrödinger';
console.log(gato);
} Una forma sencilla de alterar el comportamiento de hoisting se logra sólo con introducir una variable en el ámbito global: // Variable en el ámbito global.
var gato = 'No estoy ni muerto ni vivo, soy un perro que está fuera de la caja.';
function elevarExperimento() {
console.log(gato); // undefined
invocarOtraFuncion();
var gato = 'Schrödinger';
console.log(gato);
}
function invocarOtraFuncion() {
console.log('Por alguna razón alguien me invocó.');
}
elevarExperimento(); en el primer function elevarExperimento() {
var gato;
console.log(gato); // undefined
invocarOtraFuncion();
gato = 'Schrödinger';
console.log(gato);
} Una manera bastante interesante de alterar el comportamiento "hoisting" del motor de JavaScript se puede comprobar pasando la variable del ámbito global como parametro de la función, por ejemplo: var gato = 'No estoy ni muerto ni vivo, soy un perro que está fuera de la caja.';
function elevarExperimento(gato) {
console.log(gato); // 'No estoy ni ... fuera de la caja.'
invocarOtraFuncion();
var gato = 'Schrödinger';
console.log(gato);
}
function invocarOtraFuncion() {
console.log('Por alguna razón alguien me invocó.');
}
elevarExperimento(gato); Por esta razón la mayoría de desarrolladores recomiendan brindar legibilidad al código declararando las variables al principio de su ámbito, esto también permite detectar function soyUnDesarrolladorCivilizado() {
var nombre = 'Hattori Hanzō';
var posicion = 'Ninja';
var habilidad = 'Invisibilidad';
var extension = 'Katana';
liderarUnClan();
unirUnaNacion();
} En el fondo este tema es mucho más extenso, si se juega y escarba un poco más se pueden descubrir más Las sugerencias son bienvenidas (y) |
haz un pull request... |
Cierto, olvide las bondades de "Fork". Tuanis! |
No description provided.
The text was updated successfully, but these errors were encountered: