代码之家  ›  专栏  ›  技术社区  ›  Soliman Mahmoud Soliman

为什么将var传递给一个函数会使这个var在内部不可变?

  •  -1
  • Soliman Mahmoud Soliman  · 技术社区  · 6 年前

    我是js新手,我想了解这三种情况下x变量之间的区别,以及为什么代码中的第三种情况下x=10仍然让我困惑

          var x = 10;
          function test(){
                var x = 15;
          }
          test();
          console.log(x)// return 10
    
          ///////////////////////////
          var x = 10;
          function test(){
                 x = 15;
          }
          test();
          console.log(x)// return 15
    
          ////////////////////////////
          var x = 10;
          function test(x){
                 x = 15;
          }
          test();
          console.log(x)// return 10
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Buggy    6 年前
    var x = 10;
    function test(){
      var x = 15;
    }
    

    新的 x 在函数中创建 scope

    var x = 10;
    function test(){
      x = 15;
    }
    

    属于外部范围

    var x = 10;
    function test(x){
      x = 15;
    }
    

    原语参数(如数字)通过 更改参数的值时,不会反映此更改 全局或在调用函数中。

    Mdn