数据类型小知识

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. 【LeetCode】367. Valid Perfect Square 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:完全平方式性质 方法二:暴力求解 方法三:二 ...

  2. 1017 - Brush (III)

    1017 - Brush (III)   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sami ...

  3. ROC and AUC

    目录 概 TPR, FPR ROC and AUC 代码 ROC-wiki 概 AUC常常在文章中作为评价一个分类器优劣的指标, 却总是忘记其原由, 索性记上一笔. TPR, FPR 首先理解TP, ...

  4. CS5218替代AG6310方案设计|替代AG6310方案|DP转HDMI 4K30Hz转换方案

    AG6310是一款实现显示端DP口转HDMI数据转换器.AG6310是一款单芯片解决方案,通过DP端口连接器传输视频和音频流,其DP1.2支持可配置的1.2和4通道,分别为1.62Gbps.2.7Gb ...

  5. Linux_Vmtools的重安装与设置共享文件夹

    前置准备 已经安装了Linux的Vm虚拟机 2. 虚拟机上已经安装gcc 重装Vmtools Part1 用root账号登录Linux 弹出原来cd Vm菜单栏 - 虚拟机(M) - 重新安装VmWa ...

  6. JSP、JSTL标签、EL表达式

    JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...

  7. 双buffer实现无锁切换

    大家好,我是雨乐! 在我们的工作中,多线程编程是一件太稀松平常的事.在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃.为了 ...

  8. Visual Studio Code常用插件(持续更新)

    1.open in browser:使用快捷键在浏览器中打开html页面 在默认浏览器中打开html页面是Alt+B:在其他浏览器中显示是Shift+Alt+B:也可以右键单击html文件,在弹出的窗 ...

  9. spring clould -多模块 -swagger2 配置 nginx 的正确设置

    #user nobody; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  10. [ unittest ] 使用初体验

    import unittest from cal import Calculate class Mytest(unittest.TestCase): def setUp(self): self.cal ...