用JavaScript描述按值传递和按引用传递?

传递值 

在 由值通,一个功能是通过直接传递变量作为参数的值调用。在函数内部更改参数不会影响从函数外部传递的变量。Javascript总是按值传递,因此更改变量的值永远不会更改基础基元(字符串或数字)。

在下面的示例中,变量'a'分配了值1,但是在函数'change'内部它分配了值2。由于javascript始终是按值传递,因此显示的输出将为'1',而不是'2'。

示例

<html>

<body>

<script>

   let a = 1;

   let change = (val) => {

      val = 2

   }

   change(a);

   document.write(a);

</script>

</body>

</html>

输出结果

1

通过参考

在某些情况下,传递地址而不是传递参数来调用函数。那时,更改函数内部的值会影响从函数外部传递的变量。这称为参考传递。在javascript中,数组和对象大多遵循引用传递。

在下面的示例中,在函数“ change”之外声明了一个名为“ a”的对象。如示例2所示,此处应注意变量'a'已被突变但未分配值2。在发生突变时 会发生引用传递。   

示例1

<html>

<body>

<script>

   let a = {num:1};

   let change = (val) => {

      val.num = 2

   }

   change(a);

  document.write(JSON.stringify(a));

</script>

</body>

</html>

输出

{"num":2}


在下面的示例中,变量'a'分配 了值2 ,而不是突变。因此,按值进行传递,并且不会对外部变量产生影响。

示例2 

<html>

<body>

<script>

   let a = {num : 1};

   let change = (val) => {

      val = {num :2};

   }

   change(a);

   document.write(JSON.stringify(a));

</script>

</body>

</html>

输出

{"num":1}

以上是 用JavaScript描述按值传递和按引用传递? 的全部内容, 来源链接: utcz.com/z/343530.html

回到顶部