- string, number, boolean, array, object, null, undefined
- event capturing, Target phase, event bubbling, event delegation
- event.target, event.target.closest, event.stopPropagation, event.stopImmediatePropagation, event.preventDefault(), event.target.value, elem.addEventListener(..., true)
- Throttling and debouncing
- asynchronous programming, callback and promises, callback hell, error callback
- closure, hoisting
- function, arguments.length, anonymous function, IIFE
- lexical, functional and block scope
- event queue, event-loop, call stack, single threaded, macro-tasks(setTimeout, mouse-event, script tag), micro-tasks(process.nextTick, promises - higher priority),
- Prototype, constructor, proto, Object.create(), prototype.constructor (function constructor), instanceof
- type=module in script tag
- call, bind, apply
- method chaining, currying,
- document.querySelector(".className"),document.querySelector("#idName"), document.getElementById('id_name'), document.getElementsByClassName('className')
- ES5(2009) - useStrict, JSON.stringify, JSON.parse,
- ES6(2015) - Promises, let, const, template literal, arrow function (self = this), class, super(),constructor,extends, rest and spread. default param, destructuring,
- ES7(2017) - async await and equivalent promise conversion
- Object.keys, Object.values, for(const of )
- arr.sort((a,b)=> a-b);
- document.cookie
- onchange, onclick, onmouseover, onload, onkeydown
- ways of creating an object in JS
- data types in JS - string, number, boolean, object, array, null, undefined
- object.hasOwnProperty(property)
- promise.all(), promise.race(), .resolve(), .reject(), callback
- string.reverse().split("").includes().trim()
- array.filter().map().join("")