看doT源码的时候,看到了这么一句代码:

global = (function(){ return this || (0,eval)('this'); }());
global.doT = doT;

需要||后面的部分,是因为,this返回的是undefined

但是(0, eval)('this')有点困惑

这个链接大致说明了差别,多方考证,总结一下

1.在ecma规范中,eval存在直接调用和间接调用两种方式,而直接调用时上下文为当前执行环境,间接调用时上下文为全局环境

2.直接调用eval时,为直接调用,而使用表达式计算得到的eval是间接调用

这样就很明了了,eval('this')和(0,eval)('this')的区别是,一个是在当前执行环境下,一个是在全局执行环境下,后面的调用方式才可百分百确定指向的是全局宿主对象

转载于:https://www.cnblogs.com/strayling/p/3763792.html

(0,eval)('this')与eval的区别相关推荐

  1. 【Pytorch】model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

    model.train() 启用 Batch Normalization 和 Dropout 如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model. ...

  2. Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

    model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层. model.train() 官方文档 启用 Batch Normaliz ...

  3. Python eval 与 exec 函数的区别 - Python零基础入门教程

    目录 一.Python eval 与 exec 函数的区别 二.价值 10 个亿的智能机器人核心代码 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Py ...

  4. 一些数据格式化-Eval( )和DataBinder.Eval(Container.DataItem, )的区别及用法

      ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldn ...

  5. float和eval在python中的意思_Python3中,eval和float有什么区别

    >>> x = 1 >>> eval("x + 1")  # 注意:"x + 1"是字符串 2 >>> e ...

  6. 标准的JS里,eval和window.eval属于不同的语法!

    最近写的一个脚本里需要在全局下执行代码.这个例子以前见到过,在IE6,7,8下用window.exeScript方法,其他则调用window.eval方法即可. 看似很简单,运行也正确.eval声明的 ...

  7. eval函数python_Python eval()函数

    eval函数python Python eval() function is used to parse an expression string as python expression and t ...

  8. http1.0 http1.1 http2 之间的区别

    一.HTTP基础 1.1 HTTP定义 HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议. 1.2 HTTP发展史 ...

  9. ajax eval html,Ajax eval的应用示例

    Ajax eval的使用示例 (1)eval基本语法: eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. ...

  10. php eval 二进制,PHP eval函数使用介绍

    代码: eval("echo'hello world';"); 上边代码等同于下边的代码: echo"hello world"; 在浏览器中都输出:hello ...

最新文章

  1. 范式青春er,寻找同行的你!
  2. 主要垃圾回收器和垃圾回收算法
  3. [Qt教程] 第34篇 网络(四)FTP(二)
  4. python批量转换图片格式_python批量将图片转换为JPEG格式
  5. 无向简单图怎么判断_bfs----判断无向简单图中任意两点是否连通
  6. oracle去除表中字段中特殊符号('tab','空格','换行符','回车')——目前没找到可以一次性替换表中所有异常数据的方法,只能对字段逐一去除,如果有还希望留言赐教
  7. 【讨论】测试工程师能否作为一份终生职业?30岁+怎么办?
  8. python实现搜狗新闻挖掘(一)
  9. 计算机怎么制作个人简历表步骤图片,教你如何制作个人简历表格!ppt课件
  10. VirtualDub
  11. 简述igp和egp_路由协议的常见分类——GGP、EGP和IGP介绍
  12. word2016拼音指南功能无效解决方案
  13. 亚马逊云科技在中国市场火了?真相令人想不到
  14. matlab最优轨迹规划,matlab机器人轨迹规划
  15. LDAP目录服务折腾之后的总结
  16. jquery多属性选择器
  17. 100天单词学习计划
  18. 麒麟搭建ftp服务器实现文件共享,麒麟系统安装ftp
  19. 腾讯资深产品经理谈敏捷开发于游戏
  20. OBD-II协议对比介绍

热门文章

  1. double类型最大值_2020重新出发,JAVA入门,数据类型
  2. 解压tar.xz文件
  3. onbeforeedit和onbeginedit数据不一致_深度解读,奔溃一致性、应用一致性的区别
  4. 【java】为什么 HashMap 的加载因子是0.75?
  5. 02-伪异步I/O通讯模型
  6. 【高并发】JUC中的循环栅栏CyclicBarrier的6种使用场景
  7. 【Elasticsearch】es 别名可写 索引可写 傻傻分不清
  8. 【Kafka】Kafka IllegalArgumentException: Could not find a ‘KafkaClient‘ entry in the JAAS configuratio
  9. 【Flink】Flink TimeServer 之 timerService().registerProcessingTimeTimer
  10. Spring : spring的aware