if(this) {} else {} 是否访问过 JavaScript 中的 else?

Does if(this) {} else {} ever visit the else in JavaScript?

有没有条件if(this) {}不成立的情况?因为我想不出 this 未定义的场景。
这不是一个重要的问题,也不是任何人通常会使用的问题,我只是出于纯粹的好奇心问。

是的,在某些执行上下文中,thisundefined,即JavaScript中的falsy

In strict mode, however, if the value of this is not set when entering an execution context, it remains as undefined, as shown in the following example:

这里至少有一个复杂的场景,其中必须满足以下条件:

  • strict mode
  • 中的全局或函数执行
  • 函数定义在 top-level(实际上是 window 的函数)
  • 直接调用了该函数而不调用其父函数(即 foo() 而不是 window.foo()
  • 函数返回this
function foo() {
  'use strict'; // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
  return this;
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this