Declaraciones basicas
A continuación, las diferentes formas de declarar las variables en JavaScript. Comentarios y console.log debería ser suficiente para explicar lo que está pasando aquí:
var y, x = y = 1 //== var x; var y; x = y = 1
console.log('--> 1:', `x = ${x}, y = ${y}`)
// Will print
//--> 1: x = 1, y = 1
En primer lugar, apenas fijamos dos variables. No hay mucho aquí.
;(() => {
var x = y = 2 // == var x; x = y = 2;
console.log('2.0:', `x = ${x}, y = ${y}`)
})()
console.log('--> 2.1:', `x = ${x}, y = ${y}`)
// Will print
//2.0: x = 2, y = 2
//--> 2.1: x = 1, y = 2
Como se puede ver, el código sólo ha cambiado la ‘y’ global, ya que no hemos declarado la variable en el closure.
;(() => {
var x, y = 3 // == var x; var y = 3;
console.log('3.0:', `x = ${x}, y = ${y}`)
})()
console.log('--> 3.1:', `x = ${x}, y = ${y}`)
// Will print
//3.0: x = undefined, y = 3
//--> 3.1: x = 1, y = 2
Ahora declaramos dos variables a través var. Lo que significa que sólo viven en el contexto del closure.
;(() => {
var y, x = y = 4 // == var x; var y; x = y = 4
console.log('4.0:', `x = ${x}, y = ${y}`)
})()
console.log('--> 4.1:', `x = ${x}, y = ${y}`)
// Will print
//4.0: x = 4, y = 4
//--> 4.1: x = 1, y = 2
Ambas variables han sido declaradas utilizando var y sólo después de que han puesto sus valores. Como local > global, x e y son locales en el closure, es decir, el global x e y no se tocaron.
x = 5 // == x = 5
console.log('--> 5:', `x = ${x}, y = ${y}`)
// Will print
//--> 5: x = 5, y = 2
Esta última línea es explícito por sí mismo.
Puede probar esto y ver el resultado thanks to babel.
Mas información disponible en MDN.
Agradecimientos especiales @kurtextrem por su colaboracion :)!
Use the 100 answers in this short book to boost your confidence and skills to ace the interviews at your favorite companies like Twitter, Google and Netflix.
GET THE BOOK NOWA short book with 100 answers designed to boost your knowledge and help you ace the technical interview within a few days.
GET THE BOOK NOW