--- title: JavaScript Questions layout: layouts/page.njk permalink: /questions/javascript-questions/index.html --- * Explain event delegation. * Explain how `this` works in JavaScript. * Can you give an example of one of the ways that working with `this` has changed in ES6? * Explain how prototypal inheritance works. * What is the difference between a variable that is: `null`, `undefined` or undeclared? * How would you go about checking for any of these states? * What is a closure, and how/why would you use one? * What language constructions do you use for iterating over object properties and array items? * Can you describe the main difference between the `Array.forEach()` loop and `Array.map()` methods and why you would pick one versus the other? * Сan you describe other popular methods for iterating over arrays? * What is a typical use case for anonymous functions? * What is the difference between host objects and native objects? * Explain the difference between: `function Person(){}`, `var person = Person()`, and `var person = new Person()`? * Explain the differences on the usage of `foo` between `function foo() {}` and `var foo = function() {}` * Can you explain what `Function.call` and `Function.apply` do? What is the notable difference between the two? * Explain `Function.prototype.bind`. * What is the difference between feature detection, feature inference, and using the UA string? * Explain "hoisting". * What is type coercion? What are common pitfalls of relying on type coercion in JavaScript code? * Describe event bubbling. * Describe event capturing. * What is the difference between an "attribute" and a "property"? * What are the pros and cons of extending built-in JavaScript objects? * What is the difference between `==` and `===`? * Explain the same-origin policy with regards to JavaScript. * Why is it called a Ternary operator, what does the word "Ternary" indicate? * What is strict mode? What are some of the advantages/disadvantages of using it? * What are some of the advantages/disadvantages of writing JavaScript code in a language that compiles to JavaScript? * What tools and techniques do you use debugging JavaScript code? * Explain the difference between mutable and immutable objects. * What is an example of an immutable object in JavaScript? * What are the pros and cons of immutability? * How can you achieve immutability in your own code? * Explain the difference between synchronous and asynchronous functions. * What is event loop? * What is the difference between call stack and task queue? * What are the differences between variables created using `let`, `var` or `const`? * Can you change a property of an object defined via `const`? How you can change this behavior? * What are the differences between ES6 class and ES5 function constructors? * Can you offer a use case for the new arrow `=>` function syntax? How does this new syntax differ from other functions? * What advantage is there for using the arrow syntax for a method in a constructor? * What is the definition of a higher-order function? * Can you give an example for destructuring an object or an array? * Can you give an example of generating a string with ES6 Template Literals? * Can you give an example of a curry function and why this syntax offers an advantage? * What are the benefits of using `spread syntax` and how is it different from `rest syntax`? * How can you share code between files? * Why you might want to create static class members? * What is the difference between `while` and `do-while` loops in JavaScript? * What is a promise? Where and how would you use promise? * Discuss how you might use Object Oriented Programming principles when coding with JavaScript. * What is the difference between `event.target` and `event.currentTarget`? * What is the difference between `event.preventDefault()` and `event.stopPropagation()`? ## Coding questions * Make this work: ```javascript duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] ``` * Create a for loop that iterates up to `100` while outputting **"fizz"** at multiples of `3`, **"buzz"** at multiples of `5` and **"fizzbuzz"** at multiples of `3` and `5` * What will be returned by each of these? ```javascript console.log("hello" || "world") console.log("foo" && "bar") ``` * Write an immediately invoked function expression (IIFE)