栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

(1,eval)('this')vs eval('this')在JavaScript中?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(1,eval)('this')vs eval('this')在JavaScript中?

(1,eval)
与plain old 之间的区别在于,
eval
前者是一个 ,后者是一个左值。如果它是其他一些标识符,则将更加明显:

var x;x = 1;(1, x) = 1; //  syntax error, of course!

那是

(1,eval)
一个产生
eval
(只是说
(true && eval)
(0 ? 0 :eval)
会)的表达式,但不是对的引用
eval

你为什么在乎?

好了,规范了Ecma认为一个 参考 ,以

eval
成为一个“直接的eval通话”,但只是产生一个表达式
eval
是一间接一-
和间接的eval调用保证了在全球范围内执行。

我仍然不知道的事情:

  1. 在什么情况下 不能 在全局范围内执行直接eval调用?
  2. 在什么情况下
    this
    全局范围内的函数 不能 产生全局对象?

一些更多的信息可以在这里获得。

编辑

显然,我第一个问题的答案是“几乎总是”。直接

eval
当前 范围执行。考虑以下代码:

var x = 'outer';(function() {  var x = 'inner';  eval('console.log("direct call: " + x)');   (1,eval)('console.log("indirect call: " + x)'); })();

毫不奇怪(heh-heh),它打印出来:

direct call: innerindirect call: outer

编辑

经过更多实验后,我将暂时说

this
不能设置为
null
undefined
。可以将其设置为其他伪造的值(0,’‘,NaN,false),但只能非常故意。

我要说的是您的来源正在遭受轻度且可逆的颅直肠反转,并且可能要考虑花一周的时间在Haskell进行编程。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号