基本数据类型 - JavaScript 基础

  1. “use strict”
  2. 浏览器控制台多行输入
  3. 基本数据类型
    1. Number
      1. Infinity
      2. NaN
    2. BigInt
    3. String
    4. Boolean
    5. null 值
    6. undefined 值
  4. typeof

“use strict”

没有类似于 “no use strict” 这样的指令可以使程序返回默认模式。
一旦进入了严格模式,就没有回头路了。


浏览器控制台多行输入

搭配使用 Shift+Enter 按键去输入多行代码,

'use strict'; <Shift+Enter 换行>
// ... 你的代码
<按下 Enter 以运行>

基本数据类型


Number

JS 的数学运算是安全的。我们可以做任何事:除以 0,将非数字字符串视为数字,等等。
脚本永远不会因为一个致命的错误(“死亡”)而停止。
最坏的情况下,我们会得到 NaN 的结果。


Infinity

Infinity 代表数学概念中的 无穷大∞。是一个比任何数字都大 (并不是) 的特殊值。表示比 JS 中任何数都大的数。

1 / 0 => Infinity
1 / -0 => -Infinity
1 - Infinity => -Infinity
Infinity > Infinity => false
Infinity == Infinity => true
Infinity === Infinity => true
Infinity < Infinity => false

Infinity 与 Infinity 自身的运算

Infinity - Infinity => NaN
Infinity * Infinity => Infinity
Infinity + Infinity => Infinity
Infinity * Infinity => Infinity

NaN

NaN,NaN 表示数值类型计算错误。它是一个不正确的或者一个未定义的数学操作的结果。

 2 / "b" => NaN

运算出错得到 NaN 而不是什么 JS 错误!这个面试被问到了,JS 数值计算会报错吗?确定会报错?那 JS 也太脆弱了吧。
NaN 是粘性的。任何对 NaN 的进一步操作都会返回 NaN。

特殊数值属于 number 类型
javascript typeof Infinity => 'number' typeof NaN => 'number'


BigInt

在 JS 中,“numner”类型 ** 无法精确表示 ** 大于 $2^{53} - 1 = 9007199254740991$ 和小于 $-(2^{53} - 1) = -9007199254740991$ 的 ** 整数 **。
可以看:

Number(9007199254740992) => 9007199254740992
Number(9007199254740993) => 9007199254740992
Number(9007199254740994) => 9007199254740994
Number(9007199254740995) => 9007199254740996

有时我们需要很大的 ** 整数 **,例如用于加密或微秒精度的时间戳。

BigInt 类型用于表示 ** 任意长度的整数 **。

typeof 10n => "bigint"

可以通过将 n 附加到整数字段的末尾来创建 BigInt 值

主流浏览器已经全面支持 BigInt,IE 除外

BigInt 运算时,不能与 number 类型混合运算。只能 BigInt 与 BigInt 运算。


String

三种包含字符串方式:

  1. 单引号
  2. 双引号
  3. 反引号

反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中。

JS 没有 character 类型。C 和 Java 中被称为 char 类型。


Boolean


null 值

表示 “空”,“无” 值。
null 值不属于上述任何一种类型。构成一个独立的类型。
与 Java 相比,JavaScript 中的 null ** 不是 ** 一个 “对不存在的 object 的引用” 或者 “空
指针”。
虽然 typeof null === 'object',但是 null 不是一个 object。null 是特殊值。


undefined 值

表示“未被赋值”。
与 null 一样自成一派。
不建议显式的给变量赋值为 undefined。


typeof

typeof alert => "function"
typeof null => object
  1. null 实际上并不是一个 object,这是 JS 的一个语言上的错误,为了兼容被一致保留下来。
  2. 虽然函数隶属于 object 类型。但是 typeof 会对函数区分对待,并返回 “function” 。这也是来自于 JavaScript 语言早期的问题。从技术上讲,这种行为是不正确的,但在实际编程中却非常方便。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间