|
## 常用数据类型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`块捕获和处理错误 |
来源:https://www.cnblogs.com/shuangyou99/p/shu-ju-lei-xing.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|