数据类型

《变量和常量》一章中我们知道,开发者为了能够更方便的操作数据,会将数据进行命名保存。但是,仅仅是对每一条数据进行命名保存是不够的。因为在开发过程中,往往会涉及到大量的数据,任何东西一旦数量多了之后就会变得难以管理。所以,除了对数据进行命名保存外,开发者们还对所有的数据都进行了分类,让程序中用到的任何一条数据都是属于某一类数据类型的。

数据类型的分类

截止到 ES6 为止,JavaScript 将所有的数据划分为了 7 种不同的数据类型。其中 6 种属于简单数据类型,1 种属于复杂数据类型。

数据类型 说明
number 数值
string 字符串
boolean 布尔值
undefined 未定义
null 空值
symbol 符号
object 对象

简单数据类型

简单数据类型也称之为“基础数据类型“、”原始数据类型”。

number

number 类型即“数值类型”。我们数学中用到的所有数字都属于 number 类型。例如:

1
2
3
100; // 整数
0.1; // 小数
-50; // 负数

JavaScript 的 number 类型中除了数学中的数字外,还有一个特殊值 —— NaN

NaN(Not a Number),表示“非数字”。它的特殊之处不仅仅在于“非数字”属于数值类型,NaN还有两个特点:

  1. 任何跟NaN有关的操作,得到的结果都是NaN
  2. NaN跟任何数据都不相等,包括NaN自己。
1
2
console.log(NaN - 10); // NaN
console.log(NaN == NaN); // false(JavaScript 中判断两个值是否相等用“==”,后面会详讲)

string

string 类型即“字符串类型”。任何数据只要被引号包起来,那么就属于 string 类型。例如:

1
2
"hello";
'123';

注意:在 JavaScript 中单双引号没有区别。但是同类型引号不能互相包含。

1
2
3
4
5
// 错误语法
"hello, "JavaScript"";
// 正确语法
"hello, my name is 'HanMeiMei'";
'this is an "apple"';

模板字符串

除了常见的单双引号外,ES6 中还新增了一种字符串的表现形式,叫做“模板字符串”。符号为 ``(与波浪号同一按键)。

1
`hello JavaScript`;

模板字符串与普通字符串的区别:

  1. 模板字符串内部支持回车换行

    1
    2
    3
    4
    5
    6
    // 错误语法(普通字符串内部不支持回车换行)
    let str1 = "how are you?
    I'm fine, thank you.";
    // 正确语法
    let str2 = `how are you?
    I'm fine, thank you.`;
  2. 可以解析模板字符串内部代码

    1
    2
    3
    4
    let name = "韩梅梅";
    let str1 = "hello, name"; // hello, name
    // 在模板字符串中,将需要解析的代码用 ${} 包起来
    let str2 = `hello, ${name}`; // hello, 韩梅梅

boolean

boolean 类型即“布尔值类型”。这个类型中只有两条数据:truefalse,分别表示“真”和“假”。

undefined

undefined 类型即“未定义类型”。这个类型中只有一条数据:undefined

undefined这个值一般用于表示”没有数据”。当没有数据而程序又在访问数据时,就会得到undefined这个值。

可以简单的理解为:“有容器,没数据”。即当容器创建好,但容器中并没有保存数据时,这个时候就默认容器中的数据值为undefined 。内存会为undefined分配储存空间。

1
2
let num;
console.log(num); // undefined

null

null 类型即“空值类型”。这个类型中也只有一条数据:null

null这个值用于表示”没有/空”,一般用于释放内存。当一个容器的数据值被设置为null后,内存中就不再为该数据分配储存空间。

1
2
let num = 1000;
num = null;

symbol

symbol 类型即符号类型。这个类型是 ES6 中新增的一种数据类型,用来表示唯一的值。即在这个类型下的所有数据都是不相等的。

复杂数据类型

复杂数据类型也称之为“引用数据类型”。JavaScript 中的复杂数据类型只有一种:object。

object

object 类型即对象类型。在 JavaScript 中,只要是不属于 6 种简单类型的数据,都可以看做属于复杂类型。

例如后面我们会讲到的ArraySetMap等。

我 秦始皇 打钱