数据类型

68 阅读3分钟

我正在参与掘金创作者训练营第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))精度不足,例如 image.png
  • 可以通过将 n 附加到整数字段的末尾来创建 BigInt 值。
const bigInt = 1234567890123456789012345678901234567890n;
  • 注意:目前 Firefox/Chrome/Edge/Safari 已经支持 BigInt 了,但 IE 还没有。

String

在 JavaScript 中,有三种包含字符串的方式。

  1. 双引号:"Hello".
  2. 单引号:'Hello'.
  3. 反引号:`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"