document.querySelector('p') will select the _________

element in the HTML document.

  • first
  • last
  • random
  • first matching
document.querySelector('p') will select the first

element in the HTML document that matches the selector. If multiple

elements exist, it selects the first one it encounters in the document's order.

The ________ loop is useful for iterating through the elements of an array.

  • while
  • for
  • do...while
  • forEach
The "for" loop is commonly used for iterating through the elements of an array in JavaScript. It provides more control over the iteration process, allowing you to specify the initialization, condition, and increment, making it suitable for looping through arrays by using the array's length as a condition. The other loop types mentioned are not as commonly used for this purpose.

How can you handle errors with Fetch API in a way that also catches HTTP error statuses?

  • Using try...catch blocks
  • Checking the status property
  • Using the .then() method
  • Using the .error() method
You can handle errors with Fetch API by using try...catch blocks. While the Fetch API does not throw exceptions for HTTP error statuses (e.g., 404 or 500), it does throw exceptions for network errors (e.g., no internet connection). By wrapping your Fetch code in a try...catch block, you can catch both types of errors and handle them appropriately, ensuring a robust error-handling mechanism.

The shift() method will return _______ when it is used on an empty array.

  • undefined
  • NaN
  • 0
  • FALSE
The shift() method removes and returns the first element from an array. When used on an empty array, it returns undefined because there are no elements to remove. This behavior allows you to check if an array is empty by evaluating the result of shift().

What potential issue might arise when using arrow functions in methods within a class definition?

  • The "this" context is unpredictable and may lead to bugs.
  • Arrow functions cannot be used within class methods.
  • Arrow functions always cause memory leaks.
  • Arrow functions make the code less readable.
When arrow functions are used in methods within a class, the "this" context is fixed to the outer scope, which may lead to unexpected behavior. This can be problematic when trying to access class properties or methods, potentially introducing bugs. Developers need to be cautious when choosing arrow functions in this context.

How can you handle errors in the fetch API when using async/await syntax?

  • Use try/catch around the fetch call
  • Use the .catch() method on the Promise returned by fetch
  • Use a custom error handling function passed as a parameter to fetch
  • Errors are automatically handled by the fetch API when using async/await
When using async/await with the fetch API, you can handle errors by chaining a .catch() method onto the Promise returned by fetch. This allows you to catch any network or request-related errors and handle them gracefully. Using try/catch around the fetch call is not effective in capturing asynchronous errors that occur within the Promise. The fetch API does not automatically handle errors when using async/await.

The block of code inside ______ will be executed if its condition is true and all preceding conditions are false.

  • else-if
  • switch
  • try-catch
  • default
In a JavaScript "switch" statement, the block of code inside "default" will be executed if none of the preceding conditions (cases) match. It serves as a fallback or default option when none of the cases match the given expression.

In which scenario might a closure be particularly useful?

  • When you want to declare a global variable.
  • When you want to protect variables from being modified.
  • When you need to maintain access to local variables after the parent function has finished.
  • When you want to create a private method in an object.
Closures in JavaScript are particularly useful when you want to create private variables or methods in an object. They allow you to maintain access to local variables even after the parent function has completed its execution. Closures help with data encapsulation and information hiding.

In a Node.js application, you need to perform several database operations consecutively, where each operation depends on the result of the previous one. How might you structure your asynchronous code to handle this scenario efficiently?

  • Use Promises and "Promise.all"
  • Utilize nested callbacks
  • Implement async generators
  • Employ event emitters
To efficiently handle consecutive database operations with dependencies in Node.js, you can structure your asynchronous code using Promises and "Promise.all." This approach allows you to create Promises for each operation and then use "Promise.all" to wait for all Promises to resolve. It ensures that operations execute in the correct order and that you can handle dependencies between them easily.

Which method is used to handle the successful resolution of a Promise?

  • .then()
  • .catch()
  • .finally()
  • .resolve()
To handle the successful resolution of a Promise, you use the .then() method. This method allows you to specify what should happen once the Promise is fulfilled or successfully resolved. It takes a callback function as its argument, which gets executed when the Promise is resolved.