Javascript数据类型 之 基本数据类型
在JavaScript中,数据类型主要分为两种 :基本数据类型和引用数据类型。这里主要讲解关于基本数据类型的相关知识点。
分类
基本数据类型主要分为7种,它们分别是 null
、undefined
、number
、string
、boolean
、symbol
(ES6新增基本数据类型)、bigint
(也是新增的基本数据类型,但仍在提案阶段,它是除number以外第二个数值类数据类型)
具体可以查看MDN —— https://developer.mozilla.org/zh-CN/docs/Glossary/Primitive
特点
对于基本数据类型,它有以下这些特点:
按值访问,值不可以被改变但可以被替换。
它的值存放在栈内存中。
为什么说值是不可改变的?
我们来看一个例子:
var str = "demo"
console.log(str) // dmeo
str.toUpperCase()
console.log(str) // demo
可以看到,两次输出的值都是demo。如果是赋值操作呢?
// 紧接上述例子
str = str.toUpperCase()
console.log(str) // DEMO
可以看到,这里输出的结果是DEMO。但这并是不因它的值被改变了,前者str和后者str其实是两个不同的内存空间。在JavaScript中,赋值操作就等于新开辟了一处内存空间。我们看下面这个图:
因此,str的值准确的说是被替换了,而不是改变了。
值的比较
我们来看一个例子:
var a = 1;
var b = "1";
console.log(a == b) // true
console.log(a === b) // false
"==" 与 "===" 的简单区别
== :只对值进行比较,会进行数据类型的转换
===:不仅对值进行比较,而且还会对类型进行比较
null 与 undefined
这两者都是JavaScript中的基本数据类型,似乎两者很相似,但还是有一些不同点的。
null是等于空值,俗称“空指针对象”,因此它是属于一个对象声明且被定义了,而其定义的值就是“空值”;
undefined是表示根本不存在,还未被定义。
下面看一个例子简单理解:
var x;
console.log(x) // undefined
console.log(typeof x) // undefined
var y = null;
console.log(y) // null
console.log(typeof y) // object
可以看到,x是属于声明未定义,因此输出是undefined类型;而y是属于声明且定义了,因此输出是null。
typeof
是用于判断数据类型的,但因为null属于空指针对象,因此使用typeof判断null的类型数据时返回的是object。
bigint
BigInt
是JavaScript中一个新的基本数据类型,它的出现主要是因为在JavaScript中一直缺少处理整数的数据类型,同时在处理大整数的时候也会出现各种问题。BigInt
主要是为了解决大整数的存储和处理等问题。
此处不再展开,本人对JavaScript处理数字这块并没有深入研究,只知道对于小数和大整数的处理时经常会有一些奇奇怪怪的问题。之后仍需对这块知识进行学习...
关于基本数据类型想到的知识点暂时只有这些,如果有什么错误之处或者不足之处希望大家可以指出或进行补充。之后会对引用数据类型进行总结。
参考文章
-
原始数据 —— MDN
-
JavaScript 深入了解基本类型和引用类型的值
-
JavaScript的数据类型及其检测
-
undefined与null的区别
http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html