JavaScript 本身是一门弱类型语言,这意味着 JavaScript 变量没有预先确定的类型。变量当前的类型由其值所决定,也许上一秒种的string,下一秒可能就是个array。所以当我们进行某些操作时,变量可以进行类型之间的转换,接下来我们就谈一谈数据类型到底是如何转换的。
前言
先来看一道面试题
let result = 100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false;
// result应该是?
题目考察的知识点是数据类型隐式转换,想要做对这道题,我们必须了解 JavaScript 在转换的时候,会遵循哪些规则:
JS数据类型
首先,在 JavaScript 语言中数据类型分为2大类:原始值类型和对象类型
原始值类型,就是我们常说的「值类型/基本数据类型」
number
string
boolean
null
undefined
symbol
bigint
而对象类型指的是「引用数据类型」
- 标准普通对象:
object
- 标准特殊对象:
Array
、RegExp
、Date
、Math
、Error
…… - 非标准特殊对象:
Number
、String
、Boolean
…… - 可调用/执行对象「函数」:
function
类型之间的转换