How does the temporal dead zone impact function expressions in JavaScript?
- It prevents the use of arrow functions in function expressions.
- It enforces a delay in the execution of function expressions.
- It causes a runtime error if a variable is accessed before its declaration in a function.
- It makes function expressions execute before other code in the same scope.
The temporal dead zone (TDZ) is a phase during the variable initialization in JavaScript. It occurs between the variable's declaration and its assignment. During this phase, trying to access the variable will result in a ReferenceError. This impacts function expressions as variables declared within them are also subject to the TDZ. If you try to access such a variable before its declaration, it will lead to a runtime error.
Which method is commonly used to iterate through elements of an array in JavaScript?
- for...in loop
- forEach() method
- while loop
- map() method
The forEach() method is commonly used to iterate through elements of an array in JavaScript. It allows you to execute a provided function once for each array element, making it a straightforward choice for looping through arrays. The other options, such as for...in loop, while loop, and map() method, have different use cases and are not the most common choices for simple array iteration.
What issues might arise due to JavaScript's prototype chain, and how might they be mitigated?
- Issues may include unintentional property overwrites, inefficiency due to long chains, and unexpected inheritance. Mitigation involves using techniques like Object.create(), encapsulation, and avoiding global scope pollution.
- Issues include limited encapsulation, increased memory usage, and reduced performance. Mitigation is achieved through using classes, constructors, and the ES6 "super" keyword for proper inheritance.
- Problems include circular references, inability to hide properties, and difficulties with class-based modeling. Mitigation is achieved by avoiding circular references and using ES6 classes.
- Problems might involve conflicts between prototypes, slow property access, and limited flexibility. Mitigation requires optimizing property access and using mixins.
JavaScript's prototype chain can lead to issues like unintentional property overwrites, inefficiency, and unexpected inheritance. To mitigate these, developers can use techniques like Object.create() to create clean, isolated objects, encapsulation to hide properties, and avoid global scope pollution.
You're debugging a JavaScript application and notice that a function defined within an object method using an arrow function is not behaving as expected. The "this" keyword is not referring to the object. What could be the reason for this?
- Arrow functions always bind "this" to the object
- Arrow functions don't have their own "this"
- Objects cannot contain arrow functions
- The object's properties are incorrectly defined
Arrow functions in JavaScript do not have their own "this" context. Instead, they inherit the "this" value from their containing function or the global context. If an arrow function is used inside an object method, it will use the "this" from the surrounding scope, which might not be the object itself.
When using querySelectorAll, the returned object is a _______.
- NodeList
- HTMLCollection
- Array
- Element
When you use querySelectorAll, it returns a NodeList. A NodeList is a collection of DOM elements that match the specified selector. Unlike an HTMLCollection, a NodeList is not live, which means it won't change dynamically as the document does.
Which part of a "for" loop is executed only once, when the loop starts?
- Initialization
- Condition
- Increment
- Body of the loop
The part of a "for" loop that is executed only once, when the loop starts, is the initialization. It is where you define and initialize loop control variables. The condition is checked before each iteration, the increment is executed after each iteration, and the body of the loop contains the code that is executed repeatedly until the condition is false.
In order to make an object iterable with a for...of loop, you need to define its _______ method.
- loop
- forEach
- Symbol.iterator
- Object.iterable
To make an object iterable with a for...of loop, you need to define its Symbol.iterator method. This method should return an iterator object, which must have a next method that provides values one at a time. This enables you to use a for...of loop to iterate over the object's elements.
You're developing a game and you're using a two-dimensional array to represent a grid of game cells. How could you access the third cell in the second row of a grid defined as const grid = [[1,2,3], [4,5,6], [7,8,9]]?
- grid[2][1]
- grid[1][2]
- grid[3][2]
- grid[2][3]
In JavaScript, two-dimensional arrays are accessed using two pairs of square brackets. To access the third cell in the second row, you should use grid[1][2], where the first index (1) represents the second row, and the second index (2) represents the third cell within that row.
How can a "for" loop be used to iterate through the properties of an object?
- By using for...of loop
- By using for...in loop
- By using forEach method
- By using while loop
To iterate through the properties of an object, you should use a for...in loop. This loop iterates over the enumerable properties of an object and allows you to access each property name (key). The for...of loop is used for iterating over iterable objects like arrays. The forEach method is specifically used for arrays, and while loops are generally used for repetitive tasks with a condition.
To change the content of an HTML element, you can use textContent or _________.
- innerHTML
- setAttribute
- createTextNode
- appendChild
To change the content of an HTML element using JavaScript, you can use the textContent property. This property sets or returns the text content of an element, allowing you to update the visible text within an HTML element.