数据类型小知识

JavaScript主要数据类型共有7种,有stringnumberbooleanundefinednullsymbolobject。其余7种可以笼统的分为两大类:基本数据类型引用数据类型

基本数据类型:string(字符串)、number(数字)、boolean(布尔)、null(空)、undefined(未定义)、symbol(符号)

引用数据类型:object(对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象)

基本数据类型:

基本数据类型的主要特点是赋值方式是传值,并且值存在栈中。

例如:

let val1="基本数据类型"
let val2=val1
console.log(val2)//基本数据类型

基本数据类型的值,赋值后相互不会影响。

例如:

val2="基本数据的值被修改"
console.log(val1)//基本数据类型
console.log(val2)//基本数据的值被修改

下表展示这种数据类型的赋值过程:

栈内存

初始栈内存只有val1
变量名
val1 基本数据类型
   
堆内存中将val1的值赋值给val2
变量名
val1 基本数据类型
val2 基本数据类型
修改val2的值
变量名
val1 基本数据类型
val2 基本数据类型的值被修改


引用数据类型:

引用数据类型的主要特点是赋值方式是传址,并且值存在堆中。(因为引用数据的值的大小无法确定,要根据情况进行特定的配置)

例如:

const obj1=new Object()
const obj2=val1
console.log(obj2)//{}

引用数据类型的值,赋值后相互影响。

例如:

obj2.name = "引用数据的值被修改"
console.log(obj1.name)//引用数据的值被修改

下表展示这种数据类型的赋值过程:

栈内存

 
初始栈内存只有obj1
变量名
val1 引用地址(object)
   
堆内存中将obj1的引用地址赋值给obj2
变量名
val1 引用地址(object)
val2 引用地址(object)
添加obj2的值
变量名
val1 引用地址(object)
val2 引用地址(object) 添加name

 堆内存

NULL歧义:

const test=null
console.log(typeof(test))//object

for(item in test){
     console.log("运行")
  }//undefined

看在typeof中的结果null是object,而在循环中,for循环不会执行。所以在此会有一定的歧义,但是基本数据类型和引用数据类型的主要区别就是数据赋值不同和数据存储不同。所以个人感觉null是属于基本数据类型。

7种数据类型详情:

String(字符串):string类型是JavaScript中较为重要的类型,用来表示字符串。

Number(数字):用来表示数字串。主要有整数、小数、NAN等。

boolean(布尔):即布尔类型,该类型有两个值:true false

null(空):可以通过将变量的值设置为 null 来清空变量

undefined(未定义):表示变量不含有值

symbol(符号):ES6,主要防止命名冲突。

object(对象):对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象。

文字的部分论点,仅为个人观点。

JavaScript基本数据类型和引用数据类型详解的更多相关文章

  1. MySQL数据类型以及基本使用详解

    MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...

  2. JavaScript中基本数据类型和引用数据类型的区别

    1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...

  3. javascript数据基本类型和引用数据类型区别

    基本类型和引用数据类型区别 1.基本数据类型和引用数据类型 javascript中有两种数据类型,分别是基本数据类型和引用数据类型: 基本数据(原始数据)类型指的是简单的数据段,而引用数据类型则指的是 ...

  4. javascript 基本数据类型、引用数据类型

    阅读目录 数据类型 两种访问方式 两种类型复制 函数参数的传递 两种变量类型检测 回到目录   数据类型 1.   ECMAScript变量包含两种不同类型的值:基本类型值.引用类型值: 2.   基 ...

  5. JavaScript中基本数据类型和引用数据类型的区别(栈——堆)

    JavaScript中基本数据类型和引用数据类型的区别 1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据 ...

  6. javascript event(事件对象)详解

    javascript event(事件对象)详解   1. 事件对象     1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什 ...

  7. JAVA中分为基本数据类型及引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

  8. 转: javascript模块加载框架seajs详解

    javascript模块加载框架seajs详解 SeaJS是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(模块可按需加载或全部加 ...

  9. java里的基本数据类型和引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

随机推荐

  1. 【Android开发】找乐,一个笑话App的制作过程记录

    缘起 想做一个笑话App的原因是因为在知乎上看过一个帖子,做Android可以有哪些数据可以练手,里面推荐了几个数据开放平台.在这些平台中无一不是有公共的笑话接口,当时心想这个可以拿来练手啊,还挺有意 ...

  2. hdu 1528-Card Game Cheater(贪心算法)

    题意不讲,怕说不清,自己一点点看吧. 思路是贪心,将每个人的牌按从小到大或(从大到小),我是从小到大排的, 然后每次从第二摞排中找比第一摞排的那张大且相差最小的就可以了,每次找到就sum++: 最后s ...

  3. 1226 - One Unit Machine

    1226 - One Unit Machine   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...

  4. centos 各版本下载

    地址: go to http://vault.centos.org/ for packages.

  5. Rank & Sort Loss for Object Detection and Instance Segmentation 论文解读(含核心源码详解)

    第一印象 Rank & Sort Loss for Object Detection and Instance Segmentation 这篇文章算是我读的 detection 文章里面比较难 ...

  6. TCP KeepAlive机制理解与实践小结

    0 前言 本文将主要通过抓包并查看报文的方式学习TCP KeepAlive机制,以此加深理解. 1 TCP KeepAlive机制简介 TCP长连接下,客户端和服务器若长时间无数据交互情况下,若一方出 ...

  7. Python两处容易理解错误的设计

    函数内部修改可变类型的变量时不会视作局部变量(除非函数内有该变量的赋值运算符),因为如果做局部变量处理则修改语句势必报错,此处的理解不会有歧义: s = 'test' d = {True:1,2:'S ...

  8. Sentry 企业级数据安全解决方案 - Relay 运行模式

    内容整理自官方开发文档 Relay 可以在几种主要模式之一下运行,如果您正在配置 Relay server 而不是使用默认设置,那么事先了解这些模式至关重要. 模式存储在配置文件中,该文件包含 rel ...

  9. Oracle打怪升级之路二【视图、序列、游标、索引、存储过程、触发器】

    前言 在之前 <Oracle打怪升级之路一>中我们主要介绍了Oracle的基础和Oracle常用查询及函数,这篇文章作为补充,主要介绍Oracle的对象,视图.序列.同义词.索引等,以及P ...

  10. django中使用支付宝

    一.注册 https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopenhome.alipay.com%2Fplatfo ...