When building a new object that combines properties from several sources, how can the spread operator be used effectively?
- Merge properties using the { ...source1, ...source2 } syntax
- Combine properties using the Object.assign() method
- Concatenate properties using the + operator
- Extend properties using the extends keyword
The spread operator (...) is commonly used to merge properties from multiple sources into a new object. Using { ...source1, ...source2 } allows you to create a new object with properties from both sources effectively.
What character is used to define a template literal in JavaScript?
- Backtick (`)
- Dollar sign ($)
- Hash (#)
- Exclamation mark (!)
In JavaScript, a template literal is defined using the backtick (`) character. It allows for easy string interpolation and multiline strings, making it a powerful feature for string formatting.
What is the return value when accessing a Map object's element with a non-existing key?
- undefined
- nan
- KeyError
- FALSE
When accessing a non-existing key in a Map, the result is undefined. This behavior is different from objects, where accessing a non-existing property returns undefined.
If you need to access both the index and value in an array using for...of, use __________ to convert the array into an iterable of index-value pairs.
- Object.entries()
- Array.entries()
- indexValuePairs()
- iterable()
If you need to access both the index and value in an array using for...of, use Array.entries() to convert the array into an iterable of index-value pairs. This allows you to destructure the pairs in the for...of loop, providing both index and value in each iteration.
JavaScript’s __________ nature allows it to perform non-blocking operations despite being single-threaded.
- Synchronous
- Asynchronous
- Parallel
- Multithreaded
The correct option is Asynchronous. JavaScript's asynchronous nature is a key feature that enables it to handle multiple tasks concurrently without blocking the main thread. This is achieved through mechanisms like callbacks, Promises, and async/await, making it suitable for building responsive and efficient applications.
A pure function always returns the same output given the same _________.
- Input
- Output
- Variable
- Function
A pure function is a function where the output is solely determined by its input, making it predictable and easier to test. It always returns the same output for the same input.
How does the event loop handle callback functions in JavaScript?
- It executes callbacks immediately when encountered
- It adds callbacks to the call stack for execution
- It delegates callbacks to the message queue for later execution
- It ignores callbacks entirely
The event loop in JavaScript works by constantly checking the call stack and message queue. When the call stack is empty, it picks up tasks from the message queue, including callback functions, and adds them to the call stack for execution. This ensures asynchronous operations are handled in a non-blocking way.
Can the super keyword be used in a class that does not extend another class?
- Yes
- No
- Only in static methods
- Only in arrow functions
No, the super keyword is used to call corresponding methods of the superclass in a subclass. If a class doesn't extend another class, there is no superclass, and using super is not valid.
In a recursive function, how can default parameters be used to track state across recursive calls?
- Utilize default parameter values to maintain state
- Use default parameters only for base cases
- Default parameters are not suitable for recursive functions
- Recursive functions cannot use default parameters
In a recursive function, default parameters can be leveraged to maintain state across different recursive calls. This allows you to pass and update values without explicitly passing them in each recursive call. For example, consider a factorial function where the default parameter keeps track of the current product.
How do Symbols contribute to better property encapsulation in objects?
- Symbols allow for private properties
- Symbols allow for dynamic property names
- Symbols enforce strict encapsulation
- Symbols are interchangeable with property names
Symbols in JavaScript can be used as unique keys for object properties. This allows for the creation of private properties and better encapsulation, as Symbols are not enumerable in for...in loops and do not clash with other property names.