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

ava*_*yer 5 javascript this

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

pyb*_*pyb 2

是的,在某些执行上下文中,thisis undefined,这在 JavaScript 中是假的:

但是,在严格模式下,如果在进入执行上下文时未设置 this 的值,则它将保持未定义状态,如下例所示:

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

  • 严格模式下的全局或函数执行
  • 该函数是在顶层定义的(实际上是 的函数window
  • 该函数被直接调用而不调用其父函数(即foo()而不是window.foo()
  • 返回的函数this
function foo() {
  'use strict'; // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
  return this;
}
Run Code Online (Sandbox Code Playgroud)

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