JS-数据类型与结构

本文详细探讨了JavaScript中的数据类型,包括基本数据类型和对象类型/引用类型,以及深拷贝和浅拷贝的区别。此外,还介绍了数据类型判断的方法如typeof、instanceof和Object.prototype.toString(),并讲解了数据类型的转换,如Number、String、Boolean等。
摘要由CSDN通过智能技术生成

一、数据类型

   基本数据类型

        基本类型存储的

  • Boolean (布尔类型)
  • Undefined (为定义)
  • Number (数字类型)
  • Null (空)
  • String (字符串类型)
  • Symbol (符号类型)

  对象类型/引用类型

        对象在逻辑上是属性的无序集合,是存放各种值的容器。对象值存储的是引用地址,所以和基本类型值不可变的特性不同,对象值是可变的。

  • Object
  • Function
  • Array

例: 

var foo = 1;
var bar = 2;

var obj = {foo: 1, bar: 2}

         这里声明的三个属性,基本类型存储在栈中,引用类型存在堆中,我们常用的var、let和const实际上是指针关系,指向栈和堆中的数据集

        但是const指向最外层的指针(例:0x0203),切不允许修改指针的指向关系,所以object可以修改内部的属性值,但是不能修改最外层的对象(会导致修改指向关系),其他基本数据本身就一层数据接口,所以更加不可修改

 

 二、深拷贝和浅拷贝

      1.浅拷贝

        浅拷贝是将对象第一层的每个属性进行依次复制,但是当对象的属性是引用类型时,实质复制的是其引用,当引用对象指向的值改变时也会跟着变化

      2.深拷贝

        深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型的变量后,再复制。深拷贝的对象与原来的对象是完全隔离的,互不影响,对一个对象的修改并不会影响另一个对象。

实际执行:

v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值