23. let + const
{
let string = 'Lorem Ipsum';
}
console.log(string);
// => string is not defined
const PI = 3.14;
PI = 3.1415;
// => PI has already been declared
33. Proxy + Reflect
let proxied = new Proxy({}, {
get: function(target, name) {
return Reflect.get(target, name);
},
set: function(target, name, value, receiver) {
console.log(`${name} setter is called`);
Reflect.set(target, name, value, receiver);
}
});
proxied.foo = 100;
// => foo setter is called
console.log(proxied.foo);
// => 100
34. Set + WeakSet
let array = [];
let object = [];
let set = new Set();
set.add('string value');
set.add(object);
console.log(set.has(array));
// => false
console.log(set.has(object));
// => true
35. Map + WeakMap
let array = [];
let object = [];
let map = new Map();
map.set(array, 'value for array');
map.set(object, 'value for object');
console.log(map.get(array));
// => value for array
console.log(map.get(object));
// => value for object
36. Symbols
let key1 = Symbol('foo');
let object = {};
object[key] = 'value for key1';
console.log(object['foo']);
// => undefined
console.log(object[key1]);
// => value for key1
console.log(Object.keys(object));
// => []
42. Exponentiation
let squared = 2 ** 2;
// same as: 2 * 2
let cubed = 2 ** 3;
// same as: 2 * 2 * 2
let a = 2;
a **= 2;
// same as: a = a * a;
let b = 3;
b **= 3;
// same as: b = b * b * b;