zoukankan      html  css  js  c++  java
  • 警惕作用域陷阱(setTimeout,eval,Function)

    不知道该怎么命名这个题目。暂时先这么着吧,先看下边测试。

    =====setTimeout================================>>>>>>
    第一种:
    var x = "w.x";
    function a(){
      var x = "a.x";
      setTimeout("alert(x)");
    }
    a();  //-->"w.x"

    第二种:
    var x = "w.x";
    function a(){
      var x = "a.x";
      setTimeout(function(){alert(x)});
    }
    a();  //-->"a.x"

    =====eval================================>>>>>>
    第一种:
    var x = "w.x";
    function a(){
      var x = "a.x";
          eval("alert(x)");
    }
    a();  //--> a.x

    第二种:
    var x = "w.x";
    function a(){
      var x = "a.x";
          window.eval("alert(x)");
    }
    a();  //--> w.x

    =====function================================>>>>>>
    第一种:
    var x = "w.x";
    function a(){
      var x = "a.x";
          function b(){
        alert(x);  
      }
      b();
    }
    a();  //--> a.x

    第二种:
    var x = "w.x";
    function a(){
      var x = "a.x";
      var b = Function("alert(x)");
    }
    a();  //--> w.x

    暂时说不出个所以然来,先把他记录下来。

  • 相关阅读:
    2014-11-1 NOIP模拟赛2
    洛谷P1014 Cantor表
    洛谷P1011 车站
    洛谷P1013 进制位
    2014-11-1 NOIP模拟赛1
    2017-9-20 NOIP模拟赛
    洛谷P2016 战略游戏
    洛谷P3182 [HAOI2016]放棋子
    2014-10-31 NOIP模拟赛
    洛谷P1736 创意吃鱼法
  • 原文地址:https://www.cnblogs.com/jiajiaobj/p/2336276.html
Copyright © 2011-2022 走看看