if(this) {} else {} 是否访问过 JavaScript 中的 else?
Does if(this) {} else {} ever visit the else in JavaScript?
有没有条件if(this) {}
不成立的情况?因为我想不出 this
未定义的场景。
这不是一个重要的问题,也不是任何人通常会使用的问题,我只是出于纯粹的好奇心问。
是的,在某些执行上下文中,this
是undefined
,即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
有没有条件if(this) {}
不成立的情况?因为我想不出 this
未定义的场景。
这不是一个重要的问题,也不是任何人通常会使用的问题,我只是出于纯粹的好奇心问。
是的,在某些执行上下文中,this
是undefined
,即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