看doT源码的时候,看到了这么一句代码: global = (function(){ return this || (0,eval)('this'); }()); global.doT = doT; 需要||后面的部分,是因为,this返回的是undefined 但是(0, eval)('this')有点困惑 这个链接大致说明了差别,多方考证,总结一下 1.在ecma规范中,eval存在直接调用和间接调用两种方式,而直接调用时上下文为当前执行环境,间接调用时上下文为全局环境 2.直接调用eval…