How does the rest operator differ from the spread operator in its syntax?

  • It uses the same syntax as the spread operator
  • It uses the same syntax as the spread operator but with an extra parameter
  • It uses a different syntax with three dots (...)
  • It doesn't exist in ES6
The rest operator also uses three dots (...) but in a different context. It is used to represent an indefinite number of arguments as an array in function parameters, providing a more concise syntax for working with variadic functions.

What is a common way to handle errors in async/await functions?

  • try...except
  • errorHandling
  • catch
  • handleError
In async/await functions, the common way to handle errors is by using the try...catch block. This allows you to wrap the asynchronous code within the try block and catch any errors that may occur during its execution. The catch block is then used to handle and respond to those errors.

Can a Symbol be used as an index in an Array?

  • Yes, symbols can be used as array indices without any restrictions.
  • No, symbols cannot be used as indices in an array.
  • Yes, but with some limitations and considerations.
  • Only if the symbol is explicitly converted to a string.
Symbols cannot be used as array indices directly. They are not automatically converted to strings, and using them as indices will not work as expected.

Functions that perform HTTP requests are not considered pure because they _________.

  • Use Arrow Functions
  • Have Side Effects
  • Are Asynchronous
  • Are Synchronous
Functions that perform HTTP requests are not considered pure because they have side effects. Purity in functions means that they do not cause any observable side effects, and HTTP requests involve external actions that can impact the program's state.

When a const variable is declared in a block scope, what is the scope of this variable?

  • Local to the block
  • Global
  • Function-level
  • Lexical scope
In JavaScript, when you declare a constant variable (const) inside a block (like an if statement or a loop), the scope of that variable is limited to the block. This means it cannot be accessed outside of that block.

If a project is using a third-party library with multiple components, but only a few are needed, how can tree shaking be utilized for efficiency?

  • Import only the needed components from the library in the code.
  • Include the entire library as is.
  • Manually remove unused components from the library.
  • Use a separate smaller library for the required components.
Tree shaking can be leveraged by importing only the necessary components from the third-party library. This way, the bundler can exclude the unused parts during the build process, optimizing the bundle size. The other options are not efficient for tree shaking purposes.

ES6 enables deeper recursion without a stack overflow by using _________ tail calls.

  • Deferred
  • Optimized
  • Asynchronous
  • Tail
In-depth content in the explanation. ES6 introduces the concept of tail call optimization, allowing for deeper recursion without causing a stack overflow. Tail calls occur when a function's last action is a recursive call, and ES6 optimizes these tail calls to prevent excessive stack usage.

A Map in JavaScript can have keys of any type, unlike an object which has keys of type _________.

  • any
  • varied
  • string
  • object
Unlike objects, where keys are converted to strings, a Map in JavaScript can have keys of any data type. So, the correct answer is string.

A variable declared with let can be redeclared in a different __________ but not in the same scope.

  • block
  • function
  • module
  • statement
The correct option is 'block'. In JavaScript, a variable declared with 'let' has block-level scope. This means it can be redeclared within a different block, such as within a different if statement or loop. However, attempting to redeclare it in the same block or scope will result in an error.

A for...of loop is best suited for iterating over ________ data structures, like arrays and strings.

  • asynchronous
  • asymmetric
  • iterable
  • immutable
The for...of loop is designed for iterating over iterable data structures, such as arrays and strings. It simplifies the process of iterating over the values without the need for index management.