The for…of statement creates a loop iterating over ________ objects in JavaScript.

  • enumerable
  • all
  • array-like
  • visible
The for...of statement in JavaScript creates a loop that iterates over array-like objects, which include arrays, strings, maps, sets, and other objects that have iterable properties. It's particularly useful for iterating over the values of such objects.

In the http module, the ______ event of the server object is emitted when the server closes.

  • close
  • end
  • disconnect
  • terminate
In the http module, the close event of the server object is emitted when the server closes. This event allows you to perform cleanup or take action when the server is shutting down. The other options (end, disconnect, terminate) do not represent the server closing event in the HTTP module.

When creating a custom error class in Express.js, it should extend the built-in ______ class.

  • Error
  • HttpException
  • AppError
  • CustomError
When creating a custom error class in Express.js, it should extend the built-in Error class. This allows you to leverage the error handling capabilities provided by JavaScript and Express.js. Extending other classes like HttpException, AppError, or CustomError is not a standard practice for custom error classes in Express.js.

What is the significance of test coverage in a codebase, and how does it impact the development process?

  • Test coverage measures the number of lines of code tested; High test coverage guarantees a bug-free codebase; Test coverage is irrelevant for development.
  • Test coverage measures the percentage of code executed by tests; It helps identify untested code paths and potential bugs; High test coverage is a valuable metric but doesn't guarantee bug-free code.
  • Test coverage measures the number of test cases written; High test coverage means exhaustive testing and zero defects; Test coverage should be minimized to save development time.
  • Test coverage is the number of test tools used; High test coverage indicates a comprehensive testing suite; Test coverage depends on project size.
Test coverage measures the percentage of code executed by tests. It helps identify untested code paths, improving code quality. However, it does not guarantee a bug-free codebase, as it depends on the quality of the tests. The other options provide inaccurate definitions or misconceptions about test coverage.

In a Node.js module, properties added to the global object can be accessed from ________.

  • anywhere in the module
  • only within the module
  • any other module
Properties added to the global object in a Node.js module can be accessed from anywhere in the module, making them globally accessible within that module.

When using Promise.allSettled, the returned array consists of objects, each having a status property that can either be 'fulfilled' or ________.

  • 'completed'
  • 'resolved'
  • 'rejected'
  • 'done'
When using Promise.allSettled, the status property of each object in the returned array can either be 'fulfilled' or 'rejected,' depending on the outcome of the individual Promises in the input array.

How does the spread operator behave when used with JavaScript objects that have the same properties?

  • It merges the properties, with the values of the second object overwriting the values of the first object.
  • It throws an error because objects with the same properties cannot be spread.
  • It combines the properties into an array.
  • It creates a new object with the properties of the first object only.
When the spread operator (...) is used on objects with the same properties, it merges the properties, with the values of the second object overwriting the values of the first object. This behavior is known as object property spreading.

If an error is not handled by custom error-handling middleware in Express, it is handled by the ______.

  • next()
  • defaultErrorHandler
  • express.handleError()
  • console.error()
If an error is not handled by custom error-handling middleware in Express, it is handled by the default Express error handler, which is often referred to as the "defaultErrorHandler." This handler sends an error response to the client and logs the error details.

How does the closure concept relate to higher-order functions in JavaScript?

  • Closures are only used in lower-order functions.
  • Higher-order functions cannot create closures.
  • Higher-order functions often return closures, allowing them to encapsulate and manage private data.
  • Closures are unrelated to higher-order functions.
Closures and higher-order functions are closely related in JavaScript. Higher-order functions often return closures, which can encapsulate and manage private data, creating a powerful mechanism for maintaining state and data privacy.

In case a package should be uninstalled and also removed from the package.json, the ______ command should be executed.

  • npm remove
  • npm uninstall
  • npm erase
  • npm discard
To uninstall a package and also remove it from the package.json file, you should use the npm uninstall (or npm remove) command followed by the package name. This command removes both the package and its reference from package.json. The other options are not used for this specific purpose.

What considerations should be made while implementing asynchronous middleware in Express.js?

  • Asynchronous middleware should use the await keyword to ensure proper execution flow.
  • Asynchronous middleware should always return a Promise or use a callback.
  • Asynchronous middleware should not be used in Express.js as it can lead to performance issues.
  • Asynchronous middleware should use the sync keyword to ensure proper execution flow.
When implementing asynchronous middleware in Express.js, it's crucial to ensure that the middleware either returns a Promise or uses a callback to signal when it has completed its work. This is necessary to prevent premature termination of the request-response cycle and maintain proper error handling. Using await is a common approach to handling asynchronous operations.

You are tasked with creating an API endpoint that should respond to multiple HTTP methods (GET, POST) and have optional parameters. How would you efficiently implement this in Express.js?

  • Use app.all('/endpoint', handler)
  • Create separate route handlers for each HTTP method and parameter combination
  • Implement a single route handler and use conditional logic to handle methods and parameters
  • Define multiple endpoints for each combination of HTTP methods and parameters
In Express.js, an efficient way to handle multiple HTTP methods and optional parameters is to implement a single route handler and use conditional logic to differentiate between methods and handle optional parameters within the handler. This approach minimizes code duplication and keeps your codebase clean and maintainable. Using app.all (Option 1) would capture all HTTP methods and may lead to less control and more complex code. Separating handlers for each combination (Option 2) can result in code redundancy, making it harder to maintain. Creating multiple endpoints (Option 4) can lead to a cluttered route structure.