Var allows hoisting, and it's function-scoped. Thus can act out of block and cause errors. Let and const are block-scoped, and they dont allow hoisting. Let allows reassignment, while const doesnt.
The spread operator is used to expand an iterable (like an array or string) into individual elements. It can map arguments to a function, combine arrays, or create copies of arrays and objects to avoid "pass by reference" issues.
Map applies a function to each element of an array and returns a new array of the results. Doesnt modify the original array.
Filter creates a new array of elements from the origin array that pass a provided condition. Doesnt modify the original array.
forEach executes a given function on each element of an array. Used for side effects, doesnt return a new array.
Arrow functions are ES6 features for shorthand function syntax. Also called anonymous functions.
Format strings using backticks for dynamic content. Uses ${} for variable insertion.