JavaScript 有7种数据类型: NumberStringBooleanSymbolObjectnullundefined

JavaScript 数据类型分为两种:简单数据类型(也称为基本数据类型或者基础数据类型)和复杂数据类型(也叫引用数据类型)。

简单数据类型有:undefinednullBooleanNumberStringSymbol

复杂数据类型有:Object

我们可以用 typeof 操作符检测数据类型,这里有一些比较特殊的情况:null 返回的是 objectfunction 返回的是 function,然而并不存在 function 类型。

不存在名为数组的数据类型。

这些数据类型都有一系列的方法,也都有一系列互相转化的方法,比如 parseInttoStringNumberBoolean等。

Number(数值)

Number 的类型及示例:

  • 十进制整数:2

  • 十进制浮点数:1.1、.1

  • 科学记数法:1.23e2

  • 二进制:0b11 (有前缀 0b0B 的数值。)

  • 八进制:011、0o11 (有前缀 0o0O 的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。)

  • 十六进制:0x11 (有前缀 0x0X 的数值。)

  • Infinity(无穷,有正负之分。)

  • NaN (非数字。)

一些小数计算会有误差,比如 0.1 + 0.2 不等于 0.3。

浮点数值需要的内存空间是保存整数值的两倍。

String(字符串)

多行字符串:

var s = '12345' +
'67890' // 无回车符号

var s = `12345
67890` // 含回车符号

var longString = 'Long \
string' // 不推荐,“\”的后边有其他字符(例如空格)的话会出错

引号的里面有引号可以使用转义符:\' 或者 \"

ASCII字符可以以 \x## 形式的十六进制表示,例如:

'\x41'; // 完全等同于 'A'

还可以用 \u#### 表示一个Unicode字符:

'\u4e2d\u6587'; // 完全等同于 '中文'

Boolean(布尔值)

只有两个值:truefalsetruefalse 是区分大小写的。

Undefinednull0NaN、空字符串,用来判断的话都是 false

下列运算符会返回布尔值:

两元逻辑运算符: && (And),|| (Or)

前置逻辑运算符: ! (Not)

相等运算符:===,!==,==,!=

比较运算符:>,>=,<,<=

null 与 undefined

nullundefined 的区别: null 表示一个空值,undefined 表示一个值未定义,大多数情况下都应该用 nullundefined 仅仅在判断函数参数是否传递的情况下有用。

Object (对象)

对象是一种无序的复合数据集合。

建议给键名加引号,否则在不符合标识名的情况下会报错。

object['key'] 可以写作 object.key,前者适用范围更广。

object['key'] 不等于 object[key]

Symbol

Symbol 用来表示独一无二的值。Symbol 值是通过 Symbol 函数生成的。