在JavaScript中,可以将数据类型概括为这七种类型:

  • 数值(number):整数和小数(比如1和3.14)
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合,Function、Array都属于对象。
  • Symbol:ES6新增加的类型,表示独一无二的值,这里不再说明,后面单独总结。

1. 数值

特性:

  • 数值型在js中是以64位存储的,故1 === 1.0
  • 某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算
  • JavaScript 能够表示的数值范围为21024到2-1023(开区间)
  • 数值的表示方法有:35(十进制)、0xFF(十六进制)、0o56(八进制)、0B0101(二进制)
  • JavaScript的特殊数值:正零和负零、Infinity、NaN(主要出现在将字符串解析成数字出错的场合)

数值方法

  • parseInt(字符串, 进制) 用于将字符串转为整数
  • parseFloat(字符串) 将一个字符串转为浮点数
  • isNaN(值)用来判断一个值是否为NaN
  • isFinite(值)表示某个值是否为正常的数值

2. 字符串

特性

  • 单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号
  • 字符串默认只能写在一行内,分成多行将会报错。如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠
  • 反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符
    • \0 :null(\u0000)
    • \b :后退键(\u0008)
    • \f :换页符(\u000C)
    • \n :换行符(\u000A)
    • \r :回车键(\u000D)
    • \t :制表符(\u0009)
    • \v :垂直制表符(\u000B)
    • ' :单引号(\u0027)
    • " :双引号(\u0022)
    • \ :反斜杠(\u005C)
  • 字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
  • 如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined
  • 字符串的length属性无法改变,但是不会报错
  • JavaScript 使用 Unicode 字符集

Base64 转码方法

  • btoa():任意值转为 Base64 编码
  • atob():Base64 编码转为原来的值

3. 布尔值

特性

  • 布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示
  • 五个falsy值:undefined、null、0、NaN、空字符串

4.null 和 undefined

特性

  • null表示空值,即该处的值现在为空,一般用在空对象初始化
  • undefined表示“未定义”,一般用在基本数据类型为空
  • if语句或三元运算符中,它们都会被自动转为false

5. 对象

对象是最复杂的数据类型,又可以分成三个子类型。

  • 狭义的对象(object)
  • 数组(array)
  • 函数(function)

而狭义的对象具备以下特性:

  • 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合
  • 对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),如果键名是数值,会被自动转为字符串
  • 如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量
  • 读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符
  • 点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值
  • 查看一个对象本身的所有属性,可以使用Object.keys方法
  • delete命令用于删除对象的属性,删除成功后返回true
  • in运算符用于检查对象是否包含某个属性,如果包含就返回true,否则返回false
  • for...in循环用来遍历一个对象的全部属性
    • 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性
    • 它不仅遍历对象自身的属性,还遍历继承的属性

6. 参考文章

阮一峰 - JavaScript 教程