text: /*
   *  The 'typeof' operator requires that an 'undefined' value is returned
   *  if 'typeof' is applied to an unresolvable reference (E5 Section 11.4.3).
   *  Usually unresolvable references cause a ReferenceError.
   *
   *  This requires special handling in the compiler, which emits, in the worst
   *  case, an TYPEOFID opcode for handling this run-time.  Any compile-time
   *  resolvable references (concretely: register bound identifiers which are
   *  always non-deletable) don't require this special handling.
   *
   */
  
  /*===
  undefined
  undefined
  ===*/
  
  try {
      print(typeof foo);  // unresolvable -> undefined; requires TYPEOFID
  } catch (e) {
      print(e.name);
  }
  
  try {
      print(typeof ((foo)));  // parens must have no effect
  } catch (e) {
      print(e.name);
  }
  
  /*===
  number
  ===*/
  
  function func(x) {
      // register-bound variables are always resolvable
      return typeof x;
  }
  
  print(func(3));
  
  