JavaScript es un lenguaje potente y dinámico, que cuenta con conceptos muy interesantes.
¿Quién no ha tenido que explicar la diferencia entre == y ===? Revisaremos lo que realmente sucede en este tipo de comparaciones. Incluyendo nuevos conceptos de ES6 y entendiendo realmente cómo funciona el lenguaje.
6. QUESTIONS?
#JSBelatrix
var str = "123";
parseInt(str, 10); // 123
Number(str); // 123
+str; // 123
var num = 789;
num.toString(); // "789"
String(num); // "789“
var a = 42;
var b = a + ""; // "42"
var c = "3.14";
var d = c - 0; // 3.14
var e = null;
if (a) {
console.log('here'); // here
}
while (e) {
console.log('never runs');
}
Explicit Implicit
13. QUESTIONS?
#JSBelatrix
var foo = true;
if (foo) {
let bar = foo * 2;
bar = something( bar );
console.log( bar );
}
console.log( bar ); // ReferenceError
Let
14. QUESTIONS?
#JSBelatrix
var foo = true;
if (foo) {
var a = 2;
const b =3;
a = 3; // Works
b = 4; // Error
}
console.log( a ); // 3
console.log( b ); // ReferenceError
Const
15. QUESTIONS?
#JSBelatrixHoisting
a = 2;
var a;
console.log(a);
var a;
a = 2;
console.log(a);
console.log(a);
var a = 2;
var a;
console.log(a);
a = 2;
// 2
// undefined
18. QUESTIONS?
#JSBelatrix
foo(); // 1
var foo;
function foo () {
console.log(1);
}
foo = function () {
console.log(2);
};
function foo () {
console.log(1);
}
foo(); // 1
foo = function () {
console.log(2);
};
19. QUESTIONS?
#JSBelatrixClosures
Closure: Cuando
una función es
capaz de recordar y
acceder a su scope,
incluso cuándo se
ejecuta fuera del
scope.
function foo() {
var a = 2;
function bar() {
console.log(a);
}
return bar;
}
var baz = foo();
baz(); // 2