美文网首页
数据类型值

数据类型值

作者: 苏日俪格 | 来源:发表于2018-06-15 12:22 被阅读19次

☞☞ 个人主页欢迎访问 ☜☜


大家好,本人名叫苏日俪格,大家叫我 (格格) 就好,下面我把我对ECMAScript的数据类型及值的理解跟大家分享一下,本文纯属个人理解,有哪里不对的地方请在评论区指出,大家一起学习共同进步。

ECMAScript包括三种数据类型:基本数据类型、引用数据类型和ES6新增的Symbol原始数据类型
基本数据类型:非常简单单一的数据段,无法再进行拆分的,exp:String、Number、Boolean、Null、undefined
引用数据类型:由多个值构成的可拆分的对象,exp:Object
原始数据类型:和其他类型不一样,本身既不是构造函数,也不是一个对象,是Symbol类型,它的值是独一无二的原始类型值

原始数据类型值在我的专辑《深入浅出ES6教程》中已经详细介绍了,下面我给大家主要介绍的是基本数据类型值和引用数据类型值,先看一个简单的例子:

var a = 1;
var b = a;
b = 2;
console.log(a);

这个例子很简单,输出a=1;那么在这赋值的期间都发生了什么呢,看下面的图:

也就是说,在b=a这一步,使用a来初始化b,这样b的值也变成1,两者虽然值一样,但确是两个内存,b是a复制出来的一个副本,因此两者是独立的,互不影响,这就是js中的基本数据类型值;

那么引用数据类型的值又是怎么样的呢?

var a = {name: '苏日俪格'};
var b = a;
console.log(b.name);  // 苏日俪格
b.name = 'yufy';
console.log(a.name);  // yufy
console.log(b.name);  // yufy

大家看完了上面这个例子是不是蒙了呢,这结果恰恰和刚才的相反,这就是对象存在着引用,下面图中描述了栈堆的变化:


图中显示在执行b=a的时候,并没有分配新的内存给b,只是给了他一个指针,该指针指向了和a相同的内存,无论怎么去变动,两者都是一家子的;

如果想让对象赋值出来分配新的空间给他,在这里给大家两种比较容易的解决方式:

  • 扩展运算符:
let a = [1,2,2,3];
let b = [...a];
a.push(4);
console.log(a); // [1, 2, 2, 3, 4]
console.log(b); // [1, 2, 2, 3]
  • 循环push每一项给新的数组:
let a = [1,2,2,3];
let b = [];
for (let i=0; i<a.length; i++) {
    b.push(a[i]);
}
a.push(4)
console.log(a); // [1, 2, 2, 3, 4]
console.log(b); // [1, 2, 2, 3]

本文的所有内容均是一字一句敲上去的,希望大家阅读完本文可以有所收获,因为能力有限,掌握的知识也是不够全面,欢迎大家提出来一起分享!谢谢O(∩_∩)O~

欢迎访问我的GitHub,喜欢的可以star,项目随意fork,支持转载但要下标注,同时恭候:个人博客

等一下( •́ .̫ •̀ ),我还有最后一句话:
我爱你,
可最后我们都要长大 ,
从满腔热血变成满头白发,
终将有晚辈再出发 ,
不求陪你仗剑天涯 ,
可绝不在你启程时 ,
勒住你的马 ,
再见...

相关文章

  • JS数据类型

    数据类型分类和区别 分类 javascript数据类型分为:值类型(基本数据类型)、引用数据类型; 区别 值类型 ...

  • Java基本数据类型

    Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Float和Double的最小值和最大值都是...

  • 变量、作用域、内存

    原始值和引用值 JavaScript主要是包含两种数据类型,即原始值和引用值。原始值就是简单的数据类型,ES中包含...

  • 浅拷贝与深拷贝(JavaScript)

    一、预备知识 ECMAScript变量包含两种不同数据类型的值:基本数据类型和引用数据类型。基本数据类型:名值存储...

  • 面向对象之方法参数返回值问题

    基本数据类型的参数返回值 引用数据类型的参数返回值 总结

  • 什么是浅拷贝和深拷贝?

    浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递。 深拷贝:对基本数据类型进行值传递,对引用数据类型,...

  • JavaScript数据类型

    JavaScript数据类型分为值类型和引用数据类型,值类型:字符串(String),数字(Number),布尔(...

  • 简单数据类型和复杂数据类型

    简单数据类型和复杂数据类型 1.1 简单数据类型 ​ 简单类型(基本数据类型、值类型):在存储时变量中存储的是值本...

  • Java类型转换

    一、值类型与引用类型 值类型: 在Java中,值类型表示的是这种数据类型的值代表数据本身。八种基本数据类型就是值类...

  • python变量、语句

    值与变量 值是程序的基本组成要素。 值具有不同的数据类型,python有5个标准数据类型: Numbers(数字)...

网友评论

      本文标题:数据类型值

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