数据类型
常用数据类型
- 常用的数据类型及其描述:
数据类型 | 描述 |
---|---|
undefined |
表示变量未定义或未赋值的特殊值。 |
null |
表示一个空值。 |
boolean |
表示逻辑值,只有两个可能的值:true (真)和false (假)。 |
number |
表示数值,可以是整数或浮点数,例如42 或3.14 。 |
string |
表示文本字符串,例如"Hello, world!" 。 |
symbol |
在ECMAScript 6中引入的新类型,表示唯一的、不可变的值。每个symbol 都是独一无二的。 |
object |
表示复杂数据结构,可以包含多个键值对。对象可以是数组、函数、日期等等。 |
- 特殊的内置对象类型:
数据类型 | 描述 |
---|---|
Array |
表示有序的集合,可以包含任意类型的数据。 |
Function |
表示可执行的代码块,可以接受参数并返回值。 |
Date |
表示日期和时间。 |
RegExp |
表示正则表达式,用于匹配和操作字符串。 |
Map |
表示键值对的集合,其中键和值可以是任意类型的数据。 |
Set |
表示一组唯一值的集合,其中值可以是任意类型的数据。 |
Promise |
表示一个异步操作的最终完成或失败的结果。 |
Error |
表示在运行时发生的错误,可以捕获并处理。 |
Math |
提供了一组数学相关的函数和常量。 |
JSON |
提供了用于解析和序列化JSON数据的方法。 |
Math |
提供了一组数学相关的函数和常量。 |
Math |
提供了一组数学相关的函数和常量。 |
Math |
提供了一组数学相关的函数和常量。 |
Math |
提供了一组数学相关的函数和常量。 |
Math |
提供了一组数学相关的函数和常量。 |
判断方法
-
使用
typeof
操作符:typeof
可以用于判断大多数基本数据类型(除了null
和object
)。typeof undefined; // "undefined" typeof null; // "object" typeof true; // "boolean" typeof 42; // "number" typeof "Hello"; // "string" typeof Symbol(); // "symbol" typeof {}; // "object"
-
使用
instanceof
操作符:instanceof
可以用于判断一个对象是否属于某个特定类型或类的实例。[] instanceof Array; // true {} instanceof Object; // true new Date() instanceof Date; // true /regex/ instanceof RegExp; // true
-
使用
Array.isArray()
函数:Array.isArray()
用于检查一个值是否为数组类型。Array.isArray([]); // true Array.isArray({}); // false
-
使用
Object.prototype.toString.call()
方法:这种方法可以在所有的数据类型上使用,但需要注意传入的值必须是对象。Object.prototype.toString.call(undefined); // "[object Undefined]" Object.prototype.toString.call(null); // "[object Null]" Object.prototype.toString.call(true); // "[object Boolean]" Object.prototype.toString.call(42); // "[object Number]" Object.prototype.toString.call("Hello"); // "[object String]" Object.prototype.toString.call(Symbol()); // "[object Symbol]" Object.prototype.toString.call({}); // "[object Object]"
类型转换
隐式转换:
隐式转换是在操作中自动发生的类型转换,不需要显式地指定转换操作。以下是一些常见的隐式转换情况:
-
字符串和数字之间的隐式转换:
- 字符串转换为数字:发生在算术运算或比较操作中。
- 数字转换为字符串:发生在字符串拼接或某些上下文中,如
console.log()
输出。
-
布尔值的隐式转换:
- 非零数字、非空字符串、非空数组等被视为
true
,0
、''
、null
、undefined
、NaN
、false
等被视为false
。
- 非零数字、非空字符串、非空数组等被视为
-
其他类型之间的隐式转换:
- 数字和布尔值之间的转换:
true
转换为1
,false
转换为0
。 - 字符串和布尔值之间的转换:
true
转换为'true'
,false
转换为'false'
。
- 数字和布尔值之间的转换:
显式转换:
-
转换为字符串:
- 使用
String()
函数或.toString()
方法。 - 示例:
String(42)
或42.toString()
。
- 使用
-
转换为数字:
- 使用
Number()
函数、parseInt()
函数或parseFloat()
函数。 - 示例:
Number('42')
、parseInt('42')
或parseFloat('3.14')
。
- 使用
-
转换为布尔值:
- 使用
Boolean()
函数。 - 示例:
Boolean(0)
、Boolean('')
。
- 使用
-
转换为数组:
- 使用
Array.from()
方法将类数组对象或可迭代对象转换为数组。 - 示例:
Array.from('hello')
。
- 使用
创建方法
数据类型 | 创建方式 | 相关方法 |
---|---|---|
undefined |
通过未定义或未赋值的变量创建 | |
null |
直接使用null 关键字创建 |
|
boolean |
使用true 或false 关键字创建 |
|
number |
直接使用数字创建,可以是整数或浮点数 | Number.parseInt() 、Number.parseFloat() |
string |
使用单引号、双引号或反引号括起来的字符序列 | 字符串对象的方法,如toUpperCase() 、substring() |
symbol |
使用Symbol() 函数创建唯一的符号 |
|
object |
使用对象字面量 {} 创建,或使用构造函数创建 |
对象的属性和方法,Object 的方法,如Object.keys() |
Array |
使用数组字面量 [] 或通过Array 构造函数创建 |
数组对象的方法,如push() 、pop() 、slice() |
Function |
使用函数声明或函数表达式创建 | 函数对象的方法,如call() 、apply() |
Date |
使用new Date() 构造函数创建 |
日期对象的方法,如getFullYear() 、getMonth() |
RegExp |
使用正则表达式字面量 /pattern/ 或通过RegExp 构造函数创建 |
正则表达式对象的方法,如test() 、exec() |
Map |
使用new Map() 构造函数创建 |
Map 对象的方法,如set() 、get() 、has() |
Set |
使用new Set() 构造函数创建 |
Set 对象的方法,如add() 、has() 、delete() |
Promise |
使用new Promise() 构造函数创建 |
then() 、catch() 、finally() |
Error |
使用throw 关键字抛出错误 |
错误对象的属性和方法,如message 属性和stack 属性,try-catch 块捕获和处理错误 |