let arr = [1, 2, 3];
let doubled = arr.map(x => x * 2); // [2, 4, 6]
let even = arr.filter(x => x % 2 === 0); // [2]
let sum = arr.reduce((a, b) => a + b, 0); // 6
Objects
Objects
let obj = {a: 1, b: 2};
console.log(obj.a); // 1
obj.c = 3;
for (let k in obj) { console.log(k, obj[k]); }
Functions
Functions
function add(a, b) {
return a + b;
}
const sub = function(a, b) { return a - b; };
Arrow Functions
Arrow
const mul = (a, b) => a * b;
const sq = x => x * x;
Conditionals
Conditionals
if (x > 0) {
console.log('Positive');
} else if (x === 0) {
console.log('Zero');
} else {
console.log('Negative');
}
let res = x > 0 ? 'pos' : 'neg'; // Ternary
Loops
Loops
for (let i = 0; i < 3; i++) {
console.log(i);
}
for (let v of [1,2,3]) {
console.log(v);
}
while (x > 0) {
x--;
}
Scope & Hoisting
Scope
function foo() {
var a = 1;
if (true) {
let b = 2;
}
// b is not accessible here
}
// var is function-scoped, let/const are block-scoped
Closures
Closures
function makeAdder(x) {
return function(y) {
return x + y;
};
}
let add5 = makeAdder(5);
console.log(add5(2)); // 7
Classes
Classes
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`I am ${this.name}`);
}
}
class Dog extends Animal {
speak() {
console.log('Woof!');
}
}
Modules
Modules
// export.js
export function foo() {}
// import.js
import { foo } from './export.js';