The _________ dead zone refers to the time during which a let or const variable cannot be accessed.
- temporal
- execution
- initial
- declaration
The correct option is 'initial'. The temporal dead zone occurs between the entering of the scope and the actual declaration of the variable. During this time, trying to access the variable will result in a ReferenceError. It is called the 'initial' dead zone because it happens before the variable is initialized.
What is the main advantage of using Promises over Callbacks in asynchronous JavaScript?
- Synchronous Execution
- Conciseness and Readability
- Callback hell elimination
- Procedural Approach
Promises in JavaScript provide a cleaner and more readable way to handle asynchronous code. With promises, you can avoid nested callbacks, making the code more maintainable. Option B is correct as it highlights the conciseness and readability advantages of using Promises over Callbacks.
How does method definition in ES6 classes affect the prototype chain?
- Adds methods to the subclass only
- Adds methods to the superclass only
- Does not affect the prototype chain
- Adds methods to both the subclass and superclass
In ES6 classes, method definitions impact the prototype chain. When a method is defined in a class, it gets added to the prototype of the class. When a subclass extends a superclass, its prototype chain includes both its own methods and those of the superclass. This ensures proper inheritance and method access.
To convert a Set into an array, use the spread operator like this: [..._________].
- Set
- Map
- Iterable
- Collection
To convert a Set into an array, use the spread operator like this: [...Set]. Sets in ES6 are iterable, and using the spread operator allows you to convert the Set into an array easily.
Using _________ functions helps in maintaining function purity by not altering the original data structure.
- Map
- Reduce
- Pure
- Impure
Using pure functions helps in maintaining function purity by not altering the original data structure. Pure functions always produce the same output for the same input and do not modify external state, contributing to the predictability and reliability of the code.
What happens if you await a function that does not return a Promise?
- It throws a syntax error
- The program crashes
- It works as expected
- It returns a rejected Promise
If you await a function that does not return a Promise, it will still work as expected. JavaScript automatically wraps the non-Promise value in a resolved Promise, allowing seamless integration of async/await with traditional synchronous functions.
A function that takes another function as an argument is called a __________ function.
- Callback
- Higher-order
- Nested
- Recursive
In JavaScript, a higher-order function is a function that takes one or more functions as arguments or returns a function. It enables the use of functions as data, promoting a more functional and modular approach.
What kind of exports are more conducive to effective tree shaking?
- Default exports
- Named exports
- All exports are treated equally by tree shaking.
- Both default and named exports
Tree shaking is more effective with named exports, as it can selectively include or exclude specific exports based on usage. Default exports can still be tree shaken, but named exports provide more granularity.
What is the result of using a Symbol as a key in a JSON object when using JSON.stringify?
- It serializes the symbol key along with its associated value.
- It ignores the symbol key and only serializes other enumerable properties.
- It throws an error since symbols cannot be used as keys in JSON objects.
- It converts the symbol key to a string and serializes it.
When using JSON.stringify, symbols are ignored, and only other enumerable properties are serialized. Symbols are not convertible to strings in this context.
Can dynamic imports be conditional? If so, what is a real-world use case?
- Yes, based on browser features
- No, always loaded unconditionally
- Yes, based on time of day
- No, only for large modules
Dynamic imports can be conditional, for example, based on browser features. This allows loading different code based on the capabilities of the user's browser, optimizing performance and providing a better user experience.