经常看到有人用(1,eval)('this')的形式来获取当前的上下文对象,今天来分析一下此函数的功能及意义。
首先,先贴出一段常出现的代码
var global = (function(){
return this || (0, eval)('this');
}())
在上段代码中,是为了获到当前上下文对象。
我们可以先将上面的代码进行一下拆分:
var getThis = function(){
return this || (0,eval)('this');
}
var global = (getThis());
下面再对getThis
进行一下折分:
var getCtx = function(){
if(this){
return this;
}else{
return (0,eval)('this');
}
}
在这里的(0,eval) 返回的是eval函数,在这里为什么要用(0,eval),当然,正常情况(非IE)下,可以直接使用eval(),但是在部分低版本的ie中,不可以直接运行eval,所以可以使用 (0,eval);