【问题标题】:why passing var to a function make this var immutable inside?为什么将 var 传递给函数会使这个 var 在内部不可变?
【发布时间】:2018-09-12 11:13:34
【问题描述】:

我是 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

【问题讨论】:

  • 在第三种情况下,x 指的是参数而不是全局变量
  • 你为什么不赞成这个问题
  • idk 我没有投反对票
  • 这是任何好的教程都应该解释的东西。如果您阅读或收到的介绍没有正确解释这一点,请搜索其他介绍。

标签: javascript pass-by-reference var


【解决方案1】:
var x = 10;
function test(){
  var x = 15;
}

新的x 是在函数scope 中创建的

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

x 属于外部作用域

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

原始参数(例如数字)通过以下方式传递给函数 价值;值被传递给函数,但如果函数 更改参数的值,此更改不反映 全局或在调用函数中。

Mdn

【讨论】:

    【解决方案2】:

    这是因为 x 是按值(而不是引用)传递的。更详细的解释见这个:http://jasonjl.me/blog/2014/10/15/javascript/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多