经常看到有人用(1,eval)('this')的形式来获取当前的上下文对象,今天来分析一下此函数的功能及意义。
首先,先贴出一段常出现的代码
varglobal = (function(){returnthis|| (0,eval)('this');}())
在上段代码中,是为了获到当前上下文对象。
我们可以先将上面的代码进行一下拆分:
vargetCtx =function(){returnthis|| (0,eval)('this');}varglobal = (getCtx());
下面再对getCtx进行一下折分:
vargetCtx =function(){if(this){returnthis; }else{return(0,eval)('this'); }}
在这里的(0,eval)返回的是eval函数,在这里为什么要用(0,eval),当然,正常情况(非IE)下,可以直接使用eval(),但是在部分低版本的ie中,不可以直接运行eval,所以可以使用 (0,eval);
希望对小伙伴们有帮助。有什么异义,也请提出,以进行正确的修改。
作者:筱桀
链接:https://www.jianshu.com/p/205a4033010a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
网友评论