How do iterators use the next() method, and what does it return?

  • Iterators use next() to move to the next element and return an object with value and done properties
  • Iterators use next() to check if an element exists and return a boolean value
  • Iterators use next() to retrieve the previous element
  • Iterators use next() to skip to the end of the iteration
The next() method is called on an iterator to move to the next element in the iteration. It returns an object with two properties: value, which contains the current element, and done, a boolean indicating whether the end of the iteration has been reached. This allows for controlled and step-by-step iteration over a sequence of values.

When designing a class for a UI component, how would you define a method that shouldn't be accessible outside of the class?

  • Private Methods
  • Protected Methods
  • Public Methods
  • Static Methods
In ES6, to create a method that is not accessible outside of the class, you can use the # symbol before the method name, making it a private method. Private methods are encapsulated within the class, ensuring they are not accessible externally. This helps in controlling access to specific functionalities and maintaining the integrity of the class.

When designing a function to log user activity, what considerations should be made to maintain purity and manage side effects?

  • Store logs in a global array
  • Use asynchronous logging for better performance
  • Log only user actions without any additional data
  • Separate the logging logic from the main function
To maintain purity and manage side effects, the logging logic should be separated from the main function. This separation helps in isolating the side effect (logging) and makes the main function pure. Storing logs in a global array or mixing logging with the main function can lead to impurity.

In the context of recursion, how can destructuring assignments in ES6 improve code clarity?

  • Destructuring assignments have no impact on code clarity in recursive contexts.
  • They can introduce confusion in recursive code.
  • Destructuring assignments can simplify accessing nested values.
  • They only work with arrays and not objects in recursive scenarios.
Destructuring assignments in ES6 can enhance code clarity by simplifying the extraction of values from complex data structures. When dealing with recursive data, they make it easier to access nested values, leading to cleaner and more readable code.

What is a static method in an ES6 class?

  • A method that can only be called on instances of the class
  • A method that belongs to the class rather than an instance
  • A method that is defined using the static keyword
  • A method that cannot be accessed outside the class
In ES6, a static method is a method that belongs to the class itself rather than an instance. It is defined using the static keyword and can be called on the class itself, not on instances. This allows you to perform operations that are not specific to any instance but are related to the class as a whole.

In which environment (Node.js or browser) were ES6 Modules not originally supported?

  • Node.js
  • Browser
  • Both supported ES6 Modules
  • Neither supported ES6 Modules
ES6 Modules were not originally supported in Node.js but were supported in browsers. Node.js added support later.

How does JavaScript's single-threaded nature influence the behavior of the call stack and event loop?

  • The call stack executes tasks in parallel.
  • The event loop manages asynchronous tasks concurrently.
  • The call stack handles asynchronous tasks sequentially.
  • The event loop is unrelated to the single-threaded nature.
JavaScript's single-threaded nature means tasks are executed sequentially. The event loop manages asynchronous tasks by pushing them to the callback queue and executing them when the call stack is empty.

What is the primary purpose of a constructor in a JavaScript class?

  • Initializing class properties
  • Defining class methods
  • Controlling class inheritance
  • Managing private class members
The primary purpose of a constructor is to initialize class properties, setting up the initial state of the object. Constructors are called when an object is created, ensuring that the object starts with the desired values.

In a Promise chain, where should you place a .catch() method for centralized error handling?

  • At the beginning of the Promise chain.
  • At the end of the Promise chain.
  • It can be placed anywhere within the Promise chain.
  • Immediately after the last then() block in the Promise chain.
To achieve centralized error handling in a Promise chain, the .catch() method should be placed immediately after the last then() block. This ensures that any error thrown at any stage of the Promise chain is caught centrally, providing a clean and organized way to handle errors in asynchronous operations.

Can you enumerate the keys of a WeakMap?

  • Yes, you can use the getKeys method.
  • No, WeakMaps do not have a method to retrieve all keys.
  • Yes, you can use a loop to iterate over the keys.
  • No, keys in WeakMaps cannot be enumerated.
WeakMaps prioritize privacy by not providing a direct way to enumerate keys, contributing to their use in scenarios where key visibility is a concern.