• 警惕作用域陷阱(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

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

  • 相关阅读:
    Docker大会的新福利:LinuxKit 和 Moby 开源项目
    NS3
    (OK) NS3
    MPTCP
    Utilizing multi-core processors in NS-2
    (OK) Fedora 24
    error compiling gcc: undefined reference to libc_name_p
    gccxml
    NS3
    NS3
  • 原文地址:https://www.cnblogs.com/jiajiaobj/p/2336276.html
Copyright © 2020-2023  润新知