文章简介
本文为【JavaScript 漫游】专栏的第 002 篇文章,主要记录了笔者学习 JS 数据类型中所了解的基本知识点。
- ES5 的数据类型有哪些
- 如何区分 ES5 的数据类型
null
和undefined
的相同点和不同点- 布尔值的转换规则
parseInt
和parseFloat
的基本用法
作为 JS 的复杂数据类型,对象、函数和数组的重要知识点众多,因此笔者计划将它们的知识点记录到随后的文章当中。
ES5 的数据类型有哪些
ES5 有六种数据类型。
- 数值
number
:与 C++、Java 等不同,JS 的 number 类型包含小数和浮点数。 - 字符串
string
:JS 只有 string 类型,没有char
类型来表示单字符。 - 布尔值
boolean
undefined
:JS 的特有数据类型,表示未定义或不存在。null
- 对象
object
其中,number、string、boolean 合称为原始类型。object 称为合成类型,是多个原始类型的值的合成。undefined 和 null 一般看作是两个特殊值。
对象是最复杂的数据类型,它可以分成三个子类型。
- 狭义的对象
object
- 函数
function
:可以被执行的对象。 - 数组
array
:特殊的对象,特殊点在于它的键名都是数字。
在日常开发工作当中,以及往后的学习生活当中,“对象”都特指狭义的对象。
如何区分 ES5 的数据类型
ES5 有三种方法可以区分一个值到底是什么类型。
typeof
运算符instanceof
运算符Object.prototype.toString
方法
instanceof 运算符笔者在学习到【面向对象】章节的时候,会详细介绍。而 Object.prototype.toString 方法,笔者在记录【标准库】章节的时候,会进行说明记录。
这里先了解 typeof 运算符。它可以返回一个值的数据类型。
- 数值返回
number
- 字符串返回
string
- 布尔值返回
boolean
- undefined 返回
undefined
- null 返回
object
- array 返回
object
- object 返回
object
- function 返回
function
null 和 undefined 的相同点和不同点
null 和 undefined 都表示“没有”,在转布尔值时都会被自动转为 false。它们的区别在于,null 表示一个空的对象,它在转为数值时为 0,而 undefined 表示“此处未定义”的原始值,转为数值时为 NaN
布尔值的转换规则
除了下面六个被转为 false,其他值都视为 true
- undefined
- null
- false
- 0
- NaN
- 空字符串
parseInt 和 parseFloat 的基本用法
parseInt 用于将字符串转为整数。
parseInt('123'); // 123
它有几个注意点。
- 如果字符串头部有空格,空格会被自动去除。
- 如果参数不是字符串,会先转字符串再转换。
- 字符串转整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
- 如果第一个字符就不能转整数,返回 NaN。
parseInt(' 123'); // 123
parseInt(1.23); // 1
parseInt('123hello'); // 123
parseInt('hello123'); // NaN
parseFloat 用于将字符串转为浮点数。
parseFloat('1.23'); // 1.23
它同样有几个注意点。
- 如果字符串头部有空格,空格会被自动去除。
- 如果参数不是字符串,返回 NaN。
- 字符串转浮点数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
- 如果第一个字符就不能转整数,同样返回 NaN。
parseFloat('\t\v\r12.34\n '); // 12.34
parseFloat([]); // NaN
parseFloat('3.14more non-digit characters') // 3.14
parseFloat('FF2') // NaN