Javascript fundamentals in 2019
This will change no doubt. Here's where we might be right now.
Use document.querySelector
and document.querySelectorAll
instead of jquery.
// always returns an array
function $(selector) {
return document.querySelectorAll(selector);
}
Don't need type='text/javascript'
in a script
tag.
var is deprecated. Use const and/or let
For a value that should never be changed use const
, e.g.
const numWheels = 4;
For a value that can be changed, use let
let age = 0;
Destructuring
Instead of this:
const width = dims.width;
const height = dims.height;
You can write:
const {width, height} = dims;
Object declaration made easy
instead of
const width = 300;
const height = 150;
const obj = {
width: width,
height: height,
area: function() {
return this.width * this.height
},
};
you can simplify slightly:
const width = 300;
const height = 150;
const obj = {
width,
height,
area() {
return this.width * this.height
},
};
The spread operator
var middle = [3, 4];
var arr = [1, 2, ...middle, 5, 6];
console.log(arr);
// [1, 2, 3, 4, 5, 6]
var arr = [2, 4, 8, 6, 0];
var max = Math.max(...arr);
console.log(max);
// 8
Use class
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
// Getter
get area() {
return this.calcArea();
}
// Method
calcArea() {
return this.height * this.width;
}
}
Arrow functions
Instead of
thing.calc(function(value){
return value + 2;
});
Use:
loader.load(value => {
return value + 2;
});
Or even:
loader.load(value => value + 2);
In classic function expressions, the this keyword is bound based on the context in which it is called. With arrow functions however ... it uses this from the code that contains the arrow function.
—Cynthia Lee: When (and why) you should use ES6 arrow functions — and when you shouldn't
Promises
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
Async/Await
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await