(0,eval)('this')

2019-07-17  本文已影响0人  心淡然如水

经常看到有人用(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

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇 下一篇

猜你喜欢

热点阅读