Home 前端/建站JavaScript Javascript备忘录(1):8种数据类型+类型转换

Javascript备忘录(1):8种数据类型+类型转换

by Kevin
0 comment 19 views

JavaScript 中有 8 种基本的数据类型(译注:7 种原始类型和 1 种引用类型),我们可以将任何类型的值存入变量。例如,一个变量可以在前一刻是个字符串,下一刻就存储一个数字,允许这种操作的编程语言,例如 JavaScript,被称为“动态类型”(dynamically typed)的编程语言,意思你定义的变量并不会在定义后,被限制为某一数据类型,会随着不同赋值改变其数据类型

1.Number(数字)

  • number 类型代表数值始终是64 位的浮点数
  • 数字可以有很多操作,比如,乘法 *、除法 /、加法 +、减法 – 等等。
  • 除了常规的数字,还包括所谓的“特殊数值(“special numeric values”)”也属于这种类型:Infinity、-Infinity 和 NaN。
Infinity
  • Infinity 代表数学概念中的 无穷大 ∞。是一个比任何数字都大的特殊值。
  • 我们可以通过除以 0 来得到它,或者在代码中直接使用它:
alert( 1 / 0 ); // Infinity
alert( Infinity ); // Infinity
NaN

NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果,比如:

alert( "not a number" / 2 ); // NaN,这样的除法是错误的

NaN 是粘性的。任何对 NaN 的进一步操作都会返回 NaN,所以,如果在数学表达式中有一个 NaN,会被传播到最终结果。

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

2.BigInt

  • 在 JavaScript 中,“number” 类型无法表示大于 (253-1)(即 9007199254740991),或小于 -(253-1) 的整数。这是其内部表示形式导致的技术限制。
  • BigInt 类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。 可以通过将 n 附加到整数字段的末尾来创建 BigInt 值。
  • // 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 1234567890123456789012345678901234567890n;

3.String(字符)

  • 在 JavaScript 中,有三种包含字符串的方式。
    1. 双引号:"Hello".
    2. 单引号:'Hello'.
    3. 反引号:`Hello`.
  • 双引号和单引号都是“简单”引用,在 JavaScript 中两者几乎没有什么差别。
  • 反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中。例如:
let name = "John";

// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!

// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3

4.Boolean (逻辑类型)

  • boolean 类型仅包含两个值:truefalse
  • 这种类型通常用于存储表示 yes 或 no 的值:true 意味着 “yes,正确”,false 意味着 “no,不正确”。
  • 布尔值也可作为比较的结果.
let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked

let isGreater = 4 > 1;
alert( isGreater ); // true(比较的结果是 "yes")

5.“null” 值

  • 特殊的 null 值不属于上述任何一种类型。
  • JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值。

6.“undefined” 值

  • 特殊值 undefined 和 null 一样自成类型。
  • undefined 的含义是 未被赋值
  • 如果一个变量已被声明,但未被赋值,那么它的值就是 undefined

7.object 对象

键值对象,用于更复杂的数据结构。

8.symbol

用于唯一的标识符。

9.type of 运算符

typeof undefined // "undefined"

typeof 0 // "number"

typeof 10n // "bigint"

typeof true // "boolean"

typeof "foo" // "string"

typeof Symbol("id") // "symbol"

typeof Math // "object"  (1)

typeof null // "object"  (2)

typeof alert // "function"  (3)

10.数据类型转换

大多数情况下,运算符和函数会自动将赋予他们的值转换为正确的类型。

比如,alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。

在某些情况下,我们需要将值显式地转换为我们期望的类型。

字符串转换:调用 String(value) 来将 value 转换为字符串类型:
let value = true;
alert(typeof value); // boolean

value = String(value); // 现在,值是一个字符串形式的 "true"
alert(typeof value); // string
数字型转换:自动或使用 Number(value) 显式地将这个 value 转换为 number 类型
  • 在算术函数和表达式中,会自动进行 number 类型转换。 比如,当把除法 / 用于非 number 类型: alert( "6" / "2" ); // 3, string 类型的值被自动转换成 number 类型后进行计算,加法+除外
  • 接上, 两个数字和字符相加结果为string:console.log(“3″+”2″); //”32” console.log(“3″+2); //”32”
  • 我们也可以使用 Number(value) 显式地将这个 value 转换为 number 类型。
let str = "123";
alert(typeof str); // string
let num = Number(str); // 变成 number 类型 123
alert(typeof num); // number

number 类型转换规则:

undefined ———NaN
null—————- 0
true 和 false ————1 and 0
string 去掉首尾空格后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN。

alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
alert( Number(true) ); // 1
alert( Number(false) ); // 0

Related Articles

Leave a Comment