数据类型小知识

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】457. Circular Array Loop 环形数组是否存在循环 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 快慢指针 代码 日期 题目地址:https://le ...

  2. Sum Of Gcd(hdu 4676)

    Sum Of Gcd Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  3. Sharpness-Aware Minimization for Efficiently Improving Generalization

    目录 概 主要内容 代码 Foret P., Kleiner A., Mobahi H., Neyshabur B. Sharpness-aware minimization for efficien ...

  4. Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples

    目录 概 主要内容 Obfuscated Gradients BPDA 特例 一般情形 EOT Reparameterization 具体的案例 Thermometer encoding Input ...

  5. 知识增强的预训练语言模型系列之ERNIE:如何为预训练语言模型注入知识

    NLP论文解读 |杨健 论文标题: ERNIE:Enhanced Language Representation with Informative Entities 收录会议:ACL 论文链接: ht ...

  6. Insights直播回顾——手语服务,助力沟通无障碍

    HMS Core Insights第九期直播–手语服务,助力沟通无障碍,已于12月29日圆满结束,本期直播与小伙伴们一同了解了HMS Core手语服务的亮点特性.底层技术以及演进规划,下面我们一起来回 ...

  7. CS5268替代AG9321MCQ 替代AG9321方案 TYPEC转HDMI多功能拓展坞

    台湾安格AG9321MCQ是一款TYPEC拓展坞产品方案,他集中了TYPEC 转HDMI  VGA  PD3.0快充  QC3.0数据传输 I2S接口的音频DAC输出以及可以各种读卡器功能. Caps ...

  8. 『无为则无心』Python函数 — 34、lambda表达式

    目录 1.lambda的应用场景 2.lambda语法 3.快速入门 4.示例:计算a + b 5.lambda的参数形式 6.lambda的应用 lambda表达式的主要作用就是化简代码. 匿名函数 ...

  9. JMeter跨线程,怎么定义全局变量,跨线程使用变量?

    JMeter跨线程时,怎么定义全局变量,跨线程使用此变量? 通过函数助手,获取到设置变量的语法脚本 2.通过Bean shell Sampler取样器,定义全局变量 3.定义好全局变量,可以调用,调用 ...

  10. Linux如何对文件内容中的关键字进行查找

    如果是用vi打开文件后,在命令行下输入"/关键字"如果是在没有打开文件的前提就用"cat 文件名 | grep "关键字"