美文网首页
原始类型与对象类型区别

原始类型与对象类型区别

作者: 天空之城_2692 | 来源:发表于2018-12-30 01:53 被阅读33次

在 JS 中,除了原始类型那么其他的都是对象类型了。对象类型和原始类型不同的是,原始类型存储的是值,对象类型存储的是地址。当你创建了一个对象类型的时候,计算机会在内存中帮我们开辟一个空间来存放值,但是我们需要找到这个空间,这个空间会拥有一个地址。

const a = []

对于常量 a 来说,假设内存地址为 #001,那么在地址 #001 的位置存放了值 [],常量 a 存放了地址 #001,再看以下代码

const a = []

const b = a

b.push(1)

当我们将变量赋值给另外一个变量时,复制的是原本变量的地址,也就是说当前变量 b 存放的地址也是 #001,当我们进行数据修改的时候,就会修改存放在地址 #001 上的值,也就导致了两个变量的值都发生了改变。

接下来我们来看函数参数是对象的情况

function test(person) {

  person.age = 26

  person = {

    name: 'yyy',

    age: 30

  }

  return person

}

const p1 = {

  name: 'yck',

  age: 25

}

const p2 = test(p1)

console.log(p1) // -> ?

console.log(p2) // -> ?

对于以上代码,你是否能正确的写出结果呢?接下来让我为了解析一番:

首先,函数传参是传递对象指针的副本

到函数内部修改参数的属性这步,我相信大家都知道,当前 p1 的值也被修改了

但是当我们重新为了 person 分配了一个对象时就出现了分歧,请看下图

原始类型与对象类型区别

所以最后 person 拥有了一个新的地址,也就和 p1 没有任何关系了,导致了最终两个变量的值是不相同的。

相关文章

  • 原始类型与对象类型区别

    在 JS 中,除了原始类型那么其他的都是对象类型了。对象类型和原始类型不同的是,原始类型存储的是值,对象类型存储的...

  • JS类型的转换

    类型 1.原始(值)类型 2.对象(引用)类型 3.原始类型和对象类型的区别 隐式的类型转换 显式的类型转换 类型...

  • 【JavaScript】数据类型

    JavaScript的数据类型分为两种:原始类型和对象类型原始类型又叫基本数据类型对象类型又叫引用数据类型 区别:...

  • js小知识1

    js的原始类型?null是对象吗,基本数据类型和引用类型的区别 js中类型转化的规则 ==与===区别,什么情况下...

  • JavaScript类型进阶

    Object类型 {} [] new 原始类型和对象类型的区别 隐式类型转换 数字运算符.if语句== 显示类型转...

  • js数据类型隐式转换

    原理分析: 因为a是个对象,对象与原始类型进行比较的时候会将对象转换成原始类型,对象转换成原始类型就是依据valu...

  • 原始类型与实例对象的自动转换

    出处 包装对象 - JavaScript 教程 - 网道 ---- 原始类型与实例对象的自动转换 正文 原始类型的...

  • q第三章 类型、值和变量

    数据类型: 原始类型(primitive type)和对象类型(object type)。原始类型包括: 对象是属...

  • JS基本类型、引用类型梳理

    原始值类型与引用值类型 ECMAScript规范中定义了变量的两种类型:原始值类型和引用值类型。区别两种类型的直接...

  • js类型进阶

    类型 原始(值)类型UndefinedNullBooleanStringNumberObject 对象(引用)类型...

网友评论

      本文标题:原始类型与对象类型区别

      本文链接:https://www.haomeiwen.com/subject/yuvmlqtx.html