我正在参与掘金创作者训练营第5期,点击了解活动详情
前言
- 当创建变量时,我们会先规定它的类型,即使什么都不给它(不初始化)也会让他变成一个undefined类型
- 其中JavaScript中有8种数据类型,分为7种原始类型和1种引用类型
- 但是我们初始创建的类型不是变量的最终类型,这种特性被称为“动态类型”dynamically typed的编程语言,意思是虽然编程语言中有不同的数据类型,但是你定义的变量并不会在定义后被限制为某一数据类型。
Number
其中最常见的就是整数 ,例如let num = 99,它还有浮点数和特殊数值(Infinity 无穷大/-Infinity负无穷大/NaN)
Infinity:学概念中的 无穷大 ∞。是一个比任何数字都大的特殊值。
- 可以通过(1/0)得到它或者直接Infinity
NaN: 代表一个计算错误,它是一个不正确的或者一个未定义的数学操作所得到的结果。
- 例如:(“我是个字符串”/1)或者(NaN * 1),可能会疑惑它为什么和所有类型一起都会变成NaN,这就是它的“粘性”。
- 如果在数学表达式中有一个
NaN,会被传播到最终结果(只有一个例外:NaN * 0结果为1)。
console.log("- 1" + 2); // -12
console.log(-"1"+2); // 1
BigInt
- 实质它是为了弥补number中无法表示超过((25^3-1) —— -(25^3-1))精度不足,例如
- 可以通过将
n附加到整数字段的末尾来创建BigInt值。
const bigInt = 1234567890123456789012345678901234567890n;
- 注意:目前 Firefox/Chrome/Edge/Safari 已经支持
BigInt了,但 IE 还没有。
String
在 JavaScript 中,有三种包含字符串的方式。
- 双引号:
"Hello". - 单引号:
'Hello'. - 反引号:
`Hello`. 这里它是功能扩展符号(`这是一个字符串+${str}`),${…}内的表达式会被计算,计算结果会成为字符串的一部分
Boolean
- true和false
let isGreater = 4 > 1; alert( isGreater );
// true(比较的结果是 "yes")
null
- 这里值得注意
typeof null输出的是object但实际他并不是对象,这只js一个遗留的bug.null仅仅是一个代表“无”、“空”或“值未知”的特殊值。 - 使用:
let name = null,当你不确定一个变量该被赋值成什么那不妨试试null
undefined
- 当你做这样的举动时
let age相当于age = undefined,这样并不好就像前面所说你可以let age = null这样做更加好
Object和Symbol
- 不同于之前说的原始类型,Object内存储的是数据集合和更复杂的实体
symbol类型用于创建对象的唯一标识符。
typeof 运算符返回参数的类型。当我们想要分别处理不同类型值的时候,或者想快速进行数据类型检验时,非常有用。
- 对
typeof x的调用会以字符串的形式返回数据类型:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"