javascript - 区分局部评估和全局评估

标签 javascript

请考虑两段代码(第一段打印“Local eval”,第二段打印“Global eval”):

(function f() { 
    var x;
    try {
        eval("x");
        console.log('Local eval');
    }
    catch (e) {
        console.log('Global eval');
    }
}())

var globalEval = eval;
(function f() { 
    var x;
    try {
        globalEval("x");
        console.log('Local eval');
    }
    catch (e) {
        console.log('Global eval');
    }
}())

事实证明,即使 globalEval === eval 的计算结果为 trueglobalEvaleval < em>表现不同 因为他们有不同的名字。 (如果 eval 精确地写成 eval,则它只能是本地的。)

如何区分两个评估?有没有办法提取变量标签来推断行为?

最佳答案

很有趣。但是由于您可以控制定义对 eval 的引用的位置/时间,因此您可以说出如何区分它们。例如,有一个对象具有“函数指针”和一些指示范围的东西 - 如果你定义它,你就知道你的立场。

myEvaluator.scope 会告诉您有关 eval 范围在哪里被捕获的信息,myEvaluator.eval 可用于评估。

关于javascript - 区分局部评估和全局评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9150424/

相关文章:

javascript - 将 Rails 中的记录分组为图表?

javascript - 获取动态生成的文本区域的值

javascript - Meteor 在模式集合 2 中获取用户数据,并自动形成

javascript - jQuery 事件命名空间不起作用

javascript - 使用 Rivets.js 输出类?

javascript - 如果语句有一个字符串和其他字符串(生成列表)

javascript - 如何将当前上下文设置为变量? (加载下标)

javascript - 获取 $watch 不是 AngularJS 中的函数错误

javascript - 防止目标元素在某些情况下滚动到顶部

javascript - AngularJs 表单发布数据在我的 spring Controller 中给出空值