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

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

  • 相关阅读:
    electrica writeup
    C++ Tips and Tricks
    net-force.nl/steganography writeup
    3*n/2
    C++ 关键字浅谈
    MindMaster激活教程
    gitignre
    python pil 安装
    ubuntu 阿里云安全配置
    阿里云 centos 环境配置与 django 部署
  • 原文地址:https://www.cnblogs.com/jiajiaobj/p/2336276.html
Copyright © 2011-2022 走看看