【JavaScript】JS中两种数据类型的传参

  • JavaScript的简单数据类型和复杂数据类型
  • 01. 简单数据类型
  • 简单数据类型的传参:
  • 02. 复杂数据类型
  • 复杂数据类型的传参:

JavaScript的简单数据类型和复杂数据类型

01. 简单数据类型

  • 简单数据类型:也称为基本数据类型,值类型
  • 值类型:这是因为变量存储的是值本身,因此叫做值类型
简单数据类型的传参:
var num = 10;
function fun(x){
    x = 20;
}
fun(num);
  1. num里面申请一个空间,并存放值 10;
  2. 调用函数将 num 里面的值传给了形参 x ;
  3. x是一个未声明的变量,其在里面也申请了另一个空间,用来存放实参传进来的值,
  4. x 进行操作,并不会影响 num空间里面的值
  • 简单数据类型的是存放在里面的
  • 简单数据类型传参是将栈里面的值传给形参

02. 复杂数据类型

  • 复杂数据类型:又被称为引用类型,通过new关键字创建的对象
复杂数据类型的传参:
function Person(name) {
    this.name = name;
}

var p = new Person("A");

function func(v){
    v.name = "B";
}
func(p);
  1. 变量 p 在里面的申请一个空间用于存放 地址 ,这个 地址 会指向 里面的 Person(“A”)对象数据
  2. 调用函数,是将 p 指向的里面的地址,传给了形参 v,即 v 也申请了一个空间用于存放 地址
  3. 因为 p 和 v 的地址相同,所以他们指向的里面的数据实际上是同一个数据;
  4. 对 v 指向的数据进行操作,同样也会影响到 p 的数据,因为他们指向的是同一个数据
  • 复杂数据类型是存放在 里面的,在 中存放的是变量的值:地址,而这个地址指向存放在 里面的对象数据
  • 复杂数据类型传参是将 地址 传给了形参,而形参和实参的地址指向的是同一个对象数据

【注意】Javascript中是没有堆栈概念的,只是这种方式便于理解