Abh*_*war 3 javascript ecmascript-5
请考虑以下代码段:
var global = (function(){
return this;
}());
Run Code Online (Sandbox Code Playgroud)
当执行global时将指向window浏览器中的对象.
但这在严格模式下不起作用.为什么?
Nat*_*all 10
ES5规范允许您通过间接eval检索全局对象.
var global = (0, eval)('this');
Run Code Online (Sandbox Code Playgroud)
这适用于严格和非严格模式.
间接eval基本上是通过值而不是引用来调用eval(或者没有值绑定的名称是"eval").间接eval在全局范围内执行,而this在全局范围内是指全局对象.
有一篇详细的文章介绍了这一点:http://perfectionkills.com/global-eval-what-are-the-options/
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |