js Es Flashcards
Mention some popular features of ES6.
Supports constants/immutable variables.
Block scope support for all variables, constants and functions.
Introduction to arrow functions
Handling extended parameter
Default parameters
Extended and template literals
De-structuring assignment
Promises
Classes
Modules
Collections
Supports Map/Set & Weak-map/Weak-Set
Localization, meta-programming, internationalization
. What are the object oriented features supported in ES6.
Classes Methods Inheritance
Give a thorough comparison between ES5 and ES6.
ES5 is the fifth edition of the ECMAScript which was introduced in 2009. ES6 is the sixth edition of the ECMAScript which was introduced in 2015.
Primitive data types that are string, boolean, number, null, and undefined are supported by ES5. There are a few additions to the JavaScript data types in ES6. For supporting unique values, a new primitive data type ‘symbol’ was introduced.
In ES5, we could define the variables by using the var keyword only. In ES6, in addition to var, there are two new methods to define variables: let and const.
Both function and return keywords are used in order to define a function in ES5. An arrow function is a newly added feature in ES6 in which we don’t require the function keyword in order to define the function.
In ES5, a for loop is used to iterate over elements. ES6 introduced the idea of for…of loop in order to iterate over the values of the iterable objects.
What is the difference between let and const? What distinguishes both from var?
When declaring any variable in JavaScript, we used the var keyword. Var is a function scoped keyword. Within a function, we can access the variable. When we need to create a new scope, we wrap the code in a function.
Both let and const have block scope. If you use these keywords to declare a variable, it will only exist within the innermost block that surrounds them. If you declare a variable with let inside a block (for example, if a condition or a for-loop), it can only be accessed within that block.
The variables declared with the let keyword are mutable, which means that their values can be changed. It’s akin to the var keyword, but with the added benefit of block scoping. The variables declared with the const keyword are block-scoped and immutable. When variables are declared with the const keyword, their value cannot be modified or reassigned.
. Discuss the arrow function.
In ES6, arrow functions are introduced. The shorthand syntax for writing ES6 functions is arrow functions. The arrow function’s definition consists of parameters, followed by an arrow (=>), and the function’s body.
The ‘fat arrow’ function is another name for the Arrow function. We won’t be able to employ them as constructors.
It reduces the size of the code.
For a single-line function, the return statement is optional.
Bind the context lexically.
For a single-line statement, functional braces are not required.
Doesn’t work with new
When should one not use arrow functions?
One should not use arrow functions in the following cases:
Function Hoisting, Named Functions:
As arrow functions are anonymous, we cannot use them when we want function hoisting or when we want to use named functions.
Object methods:
var a = {
b: 7,
func: () => {
this.b–;
}
}
The value of b does not drop when you call a.func. It’s because this isn’t bound to anything and will inherit the value from its parent scope.
Callback functions with dynamic context:
var btn = document.getElementById(‘clickMe’);
btn.addEventListener(‘click’, () => {
this.classList.toggle(‘on’);
});
We’d get a TypeError if we clicked the button. This is due to the fact that this is not bound to the button, but rather to its parent scope.
this/arguments:
Since arrow functions don’t have this/arguments of their own and they depend on their outer context, we cannot use them in cases where we need to use
What is the generator function?
This is a newly introduced feature in ES6. The Generator function returns an object after generating several values over time. We can iterate over this object and extract values from the function one by one. A generator function returns an iterable object when called. In ES6, we use the * sign for a generator function along with the new ‘yield’ keyword.
function *Numbers() {
let num = 1;
while(true) {
yield num++;
}
}
var gen = Numbers();
// Loop to print the first
// 5 Generated numbers
for (var i = 0; i < 5; i++) {
// Generate the next number document.write(gen.next().value); // New Line document.write("<br>"); } Output:
1
2
3
4
5
The yielded value becomes the next value in the sequence each time yield is invoked. Also, generators compute their output values on demand, allowing them to efficiently represent expensive to compute sequences or even infinite sequences.
What is the “spread” operator in ES6?
The list of parameters is obtained using the spread operator. Three dots (…) are used to represent it. The spread operator divides an iterable (such as an array or a string) into individual elements. It’s mostly used in JavaScript to make shallow copies of JS. It improves the readability of your code by making it more concise.
The spread operator can be used to join two arrays together or to concatenate them.
Explain Destructuring in ES6.
Destructuring was introduced in ES6 as a way to extract data from arrays and objects into a single variable. It is possible to extract smaller fragments from objects and arrays using this method. The following is an example.
What are Promises in ES6?
Asynchronous programming is a concept found in JavaScript. The processes are run separately from the main thread in asynchronous programming. Promises are the most convenient approach to deal with asynchronous programming in ES6. Depending on the outcome of the procedure, a promise can be refused or resolved. Callbacks were used to cope with asynchronous programming before promises were introduced in ES6.
However, it caused the problem of callback hell, which was addressed with the introduction of promises.
(A callback is a function that is performed after another function has completed. When working with events in JavaScript, callback is very useful. As an argument to another function, we pass a function into another function.
When we use callbacks in our web applications, it’s common for them to get nested. Excessive callback usage clogs up your web application and leads to callback
Explain the Rest parameter in ES6.
It’s a new feature in ES6 that enhances the ability to manage arguments. Indefinite arguments can be represented as an array using rest parameters. We can invoke a function with any number of parameters by utilizing the rest parameter.
Discuss the template literals in ES6.
Template literals are a brand-new feature in ES6. It makes producing multiline strings and performing string interpolation simple.
Template literals, also known as string literals, allow for embedded expressions.
Template literals were referred to as template strings prior to ES6. The backtick (``) character is used to enclose template literals. The dollar sign and curly brackets (${expression}) are used to denote placeholders in template literals. If we need to use an expression within the backticks, we can put it in the (${expression}) variable.
Why should one use ES6 classes?
Developers have discovered that ES6 classes are really handy. The following are some of the most common applications of ES6 classes:
The syntax of ES6 classes is simpler and less prone to errors.
When it comes to building up inheritance hierarchies, ES6 is the ideal option because it combines new and old syntax, reducing errors and simplifying the process.
ES6 classes prevent developers from making mistakes when using a new operator. If this proves to be an invalid object for the constructor, classes eliminate this issue by having the constructor throw an exception.
Classes can also be used to call a method from the prototype’s version. With the new ES6 syntax, this version is significantly easier to use than previou
How can you create a class in ES6?
The keyword class is used to create a class in ES6. We can use class expressions or class declarations to include classes in our code. Only functions and constructors are allowed in a class definition. These components are collectively referred to as the class’s data members.
Constructors in classes are responsible for allocating memory to the class’s objects. A class’s functions are in charge of performing actions on the objects.
What is a class expression?
- What is a class expression?
In ES6, one way to define a class is to use the Class expression. Class expressions, like function expressions, can be named or unnamed. If the class is named, the name is unique to the class body. Prototype-based inheritance is used in JavaScript classes.
var Product = class {
constructor (num1, num2) {
this.num1 = num1;
this.num2 = num2;
}
multiplication() {
return this.num1 * this.num2;
}
}
console.log(new Product(5,8).multiplication());
// expected output: 40
The syntax of a class expression is similar to that of a class statement (declaration). Class expressions, on the other hand, allow you to omit the class name (“binding identifier”), which is not possible with class statements. Additionally, unlike class declarations, class expressions allow you to redefine/re-declare classes without