## 常用数据类型 1. 常用的数据类型及其描述: | 数据类型 | 描述 | | ----------- | ----------------------------------------------------------------------------------------- | | `undefined` | 表示变量未定义或未赋值的特殊值。 | | `null` | 表示一个空值。 | | `boolean` | 表示逻辑值,只有两个可能的值:`true`(真)和`false`(假)。 | | `number` | 表示数值,可以是整数或浮点数,例如`42`或`3.14`。 | | `string` | 表示文本字符串,例如`"Hello, world!"`。 | | `symbol` | 在ECMAScript 6中引入的新类型,表示唯一的、不可变的值。每个`symbol`都是独一无二的。 | | `object` | 表示复杂数据结构,可以包含多个键值对。对象可以是数组、函数、日期等等。 | 2. 特殊的内置对象类型: | 数据类型 | 描述 | | ------------- | ---------------------------------------------------------------------------------- | | `Array` | 表示有序的集合,可以包含任意类型的数据。 | | `Function` | 表示可执行的代码块,可以接受参数并返回值。 | | `Date` | 表示日期和时间。 | | `RegExp` | 表示正则表达式,用于匹配和操作字符串。 | | `Map` | 表示键值对的集合,其中键和值可以是任意类型的数据。 | | `Set` | 表示一组唯一值的集合,其中值可以是任意类型的数据。 | | `Promise` | 表示一个异步操作的最终完成或失败的结果。 | | `Error` | 表示在运行时发生的错误,可以捕获并处理。 | | `Math` | 提供了一组数学相关的函数和常量。 | | `JSON` | 提供了用于解析和序列化JSON数据的方法。 | | `Math` | 提供了一组数学相关的函数和常量。 | | `Math` | 提供了一组数学相关的函数和常量。 | | `Math` | 提供了一组数学相关的函数和常量。 | | `Math` | 提供了一组数学相关的函数和常量。 | | `Math` | 提供了一组数学相关的函数和常量。 | ## 判断方法 1. 使用`typeof`操作符:`typeof`可以用于判断大多数基本数据类型(除了`null`和`object`)。 ```javascript typeof undefined; // "undefined" typeof null; // "object" typeof true; // "boolean" typeof 42; // "number" typeof "Hello"; // "string" typeof Symbol(); // "symbol" typeof {}; // "object" ``` 2. 使用`instanceof`操作符:`instanceof`可以用于判断一个对象是否属于某个特定类型或类的实例。 ```javascript [] instanceof Array; // true {} instanceof Object; // true new Date() instanceof Date; // true /regex/ instanceof RegExp; // true ``` 3. 使用`Array.isArray()`函数:`Array.isArray()`用于检查一个值是否为数组类型。 ```javascript Array.isArray([]); // true Array.isArray({}); // false ``` 4. 使用`Object.prototype.toString.call()`方法:这种方法可以在所有的数据类型上使用,但需要注意传入的值必须是对象。 ```javascript 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]" ``` ## 类型转换 **隐式转换**: 隐式转换是在操作中自动发生的类型转换,不需要显式地指定转换操作。以下是一些常见的隐式转换情况: 1. 字符串和数字之间的隐式转换: - 字符串转换为数字:发生在算术运算或比较操作中。 - 数字转换为字符串:发生在字符串拼接或某些上下文中,如`console.log()`输出。 2. 布尔值的隐式转换: - 非零数字、非空字符串、非空数组等被视为`true`,`0`、`''`、`null`、`undefined`、`NaN`、`false`等被视为`false`。 3. 其他类型之间的隐式转换: - 数字和布尔值之间的转换:`true`转换为`1`,`false`转换为`0`。 - 字符串和布尔值之间的转换:`true`转换为`'true'`,`false`转换为`'false'`。 **显式转换**: 1. 转换为字符串: - 使用`String()`函数或`.toString()`方法。 - 示例:`String(42)`或`42.toString()`。 2. 转换为数字: - 使用`Number()`函数、`parseInt()`函数或`parseFloat()`函数。 - 示例:`Number('42')`、`parseInt('42')`或`parseFloat('3.14')`。 3. 转换为布尔值: - 使用`Boolean()`函数。 - 示例:`Boolean(0)`、`Boolean('')`。 4. 转换为数组: - 使用`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`块捕获和处理错误 |
标签:object,转换,函数,Object,数据类型,toString,true From: https://www.cnblogs.com/shuangyou99/p/shu-ju-lei-xing.html