JS基础知识

  • Post author:
  • Post category:其他




传递参数

我们知道,函数是通过形式参数接收外部传递进来的变量,并且参数都是

按值

进行传递的。

传递的参数,一般有两种类型的,即原始值和引用值。

我们会陷入一个思想:按照值传递的,就是值传递,按照引用传递的,就是引用传递。

下面是三个案例,分别看下:

  1. 参数是基本类型
const add=(num)=>{
    return num+1;
}
let num=10;
let result=add(num);
console.log(num,result)

上面这个代码大家很容易理解,全局作用域中的变量num的值并没有被改变。

2. 参数是引用类型

let a={name:'xiaoming',age:12}
const fun=(a)=>{a.name='xiaotang';return a}
let b=fun(a)
console.log(a,b);

上面的代码中输出的a和b中name值全部为xiaotang。这可能会被理解为是引用值传递

  1. 添加代码版本
function setName(obj) {
    obj.name="oldName";
    obj=new Object();
    obj.name="newName";
}
let obj1=new Object();
setName(obj1);

以上代码会输出

oldName

,说明及时传入的是对象,那么也是按照值传递的。否则代码会输出

newName

。方法中下面的两行代码,虽然重新创建了一个对象,但是在函数执行完以后,就消失了。

所以传递参数都是值类型的



版权声明:本文为qq_37898024原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。