zoukankan      html  css  js  c++  java
  • eval & window.eval & window.execScript 的区别

    eval & window.eval & window.execScript 的区别

    首先看一下 eval 和 window.eval 的区别

    直接看示例代码:

    var x = 2;
    
    var test = function(){
       var x = 5;
       eval('alert(x)');
    };
    
    var test_win = function(){
       var x = 6;
       window.eval('alert(x)');
    };
    
    alert(x);           // IE6/7/8/9/Chrome/Ff: 2
    
    test();             // IE6/7/8: 5, IE9/Chrome/Ff: 2
    
    test_win();         // IE6/7/8: 6, IE9/Chrome/Ff: 2

    这里首先定义了一个全局变量x,然后分别在 test 和 test_win 的局部闭包内定义了变量x。可以看到 eval 引用的局部变量的x,而 window.eval 引用的是全局变量x(在IE9,Chrome,FF下)。

    各位看官看到这里应该已经发现了,在IE6/7/8下还有兼容性的问题,就是说eval和window.eval在IE6/7/8下的作用是一样的。

    那如何才能兼容IE6/7/8呢?这个时候 window.execScript就派上用场了,而且这个玩意也只有IE才支持。

    将上面的 window.eval 换成 window.execScript,IE下面测试结果也是返回 2,bingo!

    总结:

    eval 作用于局部作用域,window.eval 和 window.execScript 作用于全局作用域,也可以等价的这么看

    eval === eval.call(this, str);

    window.eval === eval.call(window, str);

    -----------------------------一花开五叶 结果自然成-------------------------------------------------
  • 相关阅读:
    进制转换
    01背包基础
    6-14 Inspector s Dilemma uva12118(欧拉道路)
    9-4 Unidirectional TSP uva116 (DP)
    8-4 奖品的价值 uva11491(贪心)
    9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
    8-3 Bits Equalizer uva12545
    8-2 Party Games uva1610 (贪心)
    自动发邮件功能
    窗口截图.py
  • 原文地址:https://www.cnblogs.com/zyc-undefined/p/3398628.html
Copyright © 2011-2022 走看看