Created
February 5, 2020 11:07
-
-
Save ger86/20dfec4cf2b36bf8a7c911502de8b24f to your computer and use it in GitHub Desktop.
Variable hoisting in Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/****************************************************************************************************** | |
* | |
* 🆙🆙🆙🆙 Variable hoisting 🆙🆙🆙🆙 | |
* | |
* Característica del lenguaje que de forma automática la declaración de las variables | |
* a la parte superior del bloque funcional / global | |
* | |
*******************************************************************************************************/ | |
console.log(user); // "undefined" pero no da error | |
var user = {}; | |
// 👀 Javascript lo ve así: 👀 | |
var user; | |
console.log(user); | |
user = {}; | |
/********** | |
* 😲 También hay "Function hoisting" cuando declaramos una función | |
**********/ | |
foo(); | |
function foo() { | |
alert('it works!'); | |
}; | |
/********** | |
* ⚠️ Pero esto no funciona si asignamos una función a una variable | |
***********/ | |
foo(); | |
var foo = function() { | |
alert('it works!'); | |
}; | |
// ❌ Uncaught TypeError: foo is not a function | |
/********** | |
* 🚫 Las variables declaradas con let / const sufren hoisting pero son puestas | |
* en la Temporal Dead Zone, por lo que no pueden usarse hasta que son definidas | |
**********/ | |
console.log(user); | |
const user = {}; | |
// ❌ Uncaught ReferenceError: Cannot access 'user' before initialization |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment