js变量传递类型

有博客解释:在程序设计中,对于函数调用通常有一下几种方法,可以归纳为 值引用和 地址引用(对象引用), 按地址传递,则传递是原来变量的地址。如果对新变量做修改,那么原来的参数也会跟着变化。 找了很多博客、回答来看,终于成功让我自己混淆了,所以开始好好根据书中介绍来做理解总结。
javascript高级程序设计这本书中介绍,ECMAScript变量可能包含两种不同数据类型的值:基本类型 和 复杂类型,其中,基本类型指的是简单的数据段,引用类型指的是那些可能由多个值构成的对象。⚠️必须注意的是,ECMAScript中所有函数的参数都是按值传递的,也就是说把函数外部的值复制给函数内部的参数,就和把一个变量复制到另一个变量一样。可以这样理解,基本类型值的传递就如同基本类型变量的复制,引用类型值的传递就如同引用类型变量的复制。严格来说,访问变量有按值和按引用两种方式,而参数只能按值传递。
  • 基本数据类型:Undefined、Null、Boolean、Number、String,这5种

  • 引用类型:其值是保存在内存中的对象 Object

怎样解释上图现象?

对象是引用类型的,变量中仅仅保存的是对象的指针,只要对象变量不变化,指针不变化,值都不会发生改变,但是如果需要对象发生改变,则可以从变量的属性入手

类似地,const定义的变量应该是不可以改变的,但是改变对象的属性却使得对象发生了改变,因此可以得出结论,const保存的变量的指针,只要定义的引用类型指针不发生改变,其他任何形式的改变都是允许的。

猜你喜欢

转载自www.cnblogs.com/Pecci/p/11820449.html