Step 3 / Select topic JavaScript Hard

What this bank covers

  • An object return replaces the new instance
  • A primitive return keeps the instance
  • Field initializers run before the constructor body
  • A later field can read an earlier field
  • An earlier field reads a later field as undefined
  • Derived fields initialize when super returns
  • Static fields run during class evaluation
  • The base class finishes before the subclass body
  • A class constructor requires new
  • new.target is the constructed subclass
  • extends is evaluated before the class body
  • extends null has no prototype parent
  • Class methods are non-enumerable
  • Symbol.hasInstance customizes instanceof
  • bind reduces length by the bound arguments
  • A bound function has no prototype property
  • new Function does not close over locals
  • new Function is sloppy unless the source is strict
  • Strict arguments do not alias parameters
  • Sloppy arguments alias the named parameter
  • call(null) is not rewritten in strict mode
  • Strict direct eval does not leak var
  • A body let cannot reuse a parameter name
  • A default cannot read a later parameter
  • yield* yields values, then returns the inner result
  • throw injects an exception at the paused yield
  • return completes the generator and runs finally
  • An async return adopts a thenable
  • The promise executor runs synchronously
  • A second resolve is ignored
  • Promise.resolve returns a native promise unchanged
  • Promise.resolve adopts a thenable
  • A throwing then rejects the adopting promise
  • A microtask queued inside then runs after queued jobs
  • JSON.stringify writes -0 as 0
  • JSON.stringify rejects bigint
  • JSON.stringify rejects a cycle
  • toJSON replaces the object being serialized
  • A reviver sees children before the parent
  • structuredClone preserves a cycle
  • structuredClone keeps a Map as a Map
  • A false set trap throws in strict mode
  • A false deleteProperty trap throws in strict mode
  • A get trap must honor a frozen data property
  • Strict assignment to a non-writable property throws
  • Strict assignment to a frozen object throws
  • Strict delete on a sealed object throws
  • Strict assignment cannot extend a non-extensible object
  • Date addition concatenates and subtraction subtracts
  • Ordinary ToPrimitive swaps order by hint
  • Symbol.toStringTag sets the Object toString tag
  • Unsigned right shift turns -1 into the uint32 max
  • Bitwise OR truncates toward zero through int32
  • Both sums collapse to the same float
  • Dividing by negative zero yields -Infinity
  • Math.round breaks ties toward +Infinity
  • Array sort is stable
  • Map treats +0 and -0 as one key
  • with returns a new array
  • findLast returns the last match
  • reduce skips holes
  • copyWithin copies from a snapshot of the overlap
  • A typed array is not an Array
  • Only a literal __proto__ key sets the prototype
  • BigInt and Number cannot be mixed with +
  • bigint has its own typeof and is not === to a number
  • BigInt division truncates toward zero
  • Unary plus cannot convert a symbol
  • String concatenation rejects a symbol, String() does not
  • A returned object does not receive the public fields
  • Optional call skips the argument list
  • Nullish assignment ignores 0
  • Logical or assignment keeps a truthy left side
  • The comma operator yields the right operand
  • A bare arrow has no super binding
  • A sticky regexp anchors at lastIndex
  • Without u or v, \p is an identity escape
  • A tagged illegal escape cooks to undefined
  • toString tags null as Null
  • Strict mode hides arguments.callee
  • Indirect eval does not bind locals
  • super reaches a base static method
  • Symbol.species chooses the map constructor
  • A module namespace object is not extensible
  • Dynamic import fulfills with the namespace
  • A finally throw replaces the pending exception
  • Private names are branded per class
  • A static block sees an earlier private static field
  • Error cause is a separate property
  • AggregateError keeps an errors array
  • for await...of walks an async iterable in order
  • An async generator stays paused at yield
  • matchAll requires a global regexp
  • Named groups live on match.groups
  • toSpliced copies instead of mutating
  • toReversed copies instead of mutating
  • JSON.stringify skips symbol keys
  • The get trap receiver is the proxy
  • A has trap cannot hide a non-configurable property
  • Public instance fields are enumerable
  • Spread arguments are limited by the stack
  • return await inside try/catch
  • Run independent awaits concurrently
  • Catastrophic backtracking