Tag:es6
All the articles with the tag "es6".
使用 async/await 时,是否有必要加 try catch?
Posted on:2024年8月28日 at 01:22在使用 async/await 时,是否需要添加 try...catch 语句取决于你如何处理错误以及你的应用程序的需求。总体而言,添加 try...catch 是一个好的实践,因为它可以帮助你捕获并处理异步操作中的错误,从而提高代码的健壮性和可靠性。 为什么需要 try...catch 捕获异步操作中的错误: async/await 本质上是基于 Promise 的语法糖。当 await 关键字
JS里的类就是构造函数的语法糖,这个说法是否正确?
Posted on:2024年8月23日 at 05:19这个说法是正确的。 在 JavaScript 中,class 语法实际上是构造函数的语法糖,提供了一个更清晰和直观的方式来定义和创建对象和继承。下面是详细解释: 构造函数与类的关系 构造函数 构造函数是一种传统的创建对象的方式,通过 function 关键字定义,并且使用 new 关键字来实例化对象。 示例: function Person(name, age) { this.name = nam
promise 是否可以取消?
Posted on:2024年8月15日 at 18:38JavaScript 中的原生 Promise 不直接支持取消操作。Promise 的设计理念是一次性且不可变的,创建后就不可取消。 实现 Promise 取消的常见方法有: 1. 使用标志位 可以在 Promise 内部设置一个取消标志,手动检查这个标志来决定是否继续执行操作。 function cancellablePromise(executor) { let cancelled = fal
Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?
Posted on:2024年8月14日 at 23:41Promise 构造函数的执行 同步执行: Promise 的构造函数(即 new Promise(executor))是同步执行的。 当你创建一个新的 Promise 实例时,传递给构造函数的 executor 函数会立即同步执行。 在 executor 函数中调用 resolve 或 reject 也是同步的,直到 executor 函数执行完毕,Promise 的状态才会改变。 示例: co
Promise then 第二个参数和 Promise.catch 的区别是什么?
Posted on:2024年8月14日 at 23:21Promise.then 的第二个参数和 Promise.catch 都用于处理 Promise 的拒绝(rejected)情况,但它们的使用方式和作用有所不同。以下是它们的区别: 1. Promise.then 的第二个参数 作用:用于处理 Promise 被拒绝(rejected)时的情况。 用法: promise.then(onFulfilled, onRejected); onFulfil
es5 和 es6 使用 new 关键字实例化对象的流程是一样的吗?
Posted on:2024年8月14日 at 20:14ES5 和 ES6 在使用 new 关键字实例化对象时,整体流程类似,但在细节上有一些关键区别。下面是详细的对比: 1. ES5 的 new 实例化流程 创建新对象:new 关键字会创建一个新对象。 设置原型:新对象的 [[Prototype]] 被设置为构造函数的 prototype 属性。 绑定 this:构造函数内部的 this 被绑定到新创建的对象上。 执行构造函数:构造函数会被执行,其内
promise.race、promise.all、promise.allSettled 有哪些区别?
Posted on:2024年8月14日 at 20:02Promise.race、Promise.all 和 Promise.allSettled 都是处理多个 Promise 对象的静态方法,它们的主要区别在于处理 Promise 的方式和返回结果。下面是这三者的详细比较: 1. Promise.all 功能:接受一个 Promise 对象的可迭代对象(通常是数组),并返回一个新的 Promise 对象。这个新的 Promise 对象在所有输入的 P
详细讲一下 Symbol 数据类型特征与实际使用案例?
Posted on:2024年8月14日 at 12:26Symbol 是 ES6 引入的一种基本数据类型,它用于创建唯一且不可变的值。它主要用于解决对象属性的命名冲突问题。以下是 Symbol 的主要特征和实际使用案例: 1. 特征 1.1 唯一性 每个 Symbol 值都是唯一的,即使它们具有相同的描述。两个不同的 Symbol 对象即使描述相同,也不会相等。 const sym1 = Symbol('description'); const sym
如何使对象 iterable 化, 使其可以支持 for...of 迭代
Posted on:2024年8月14日 at 12:24要使对象支持 for...of 迭代,你需要使该对象具有符合迭代协议的迭代器。实现这一点的方法是为对象定义一个名为 Symbol.iterator 的方法。这个方法应该返回一个迭代器对象,迭代器对象必须有一个 next 方法,该方法返回一个对象,其中包含 value 和 done 属性。 以下是实现过程的步骤和示例代码: 1. 实现 Symbol.iterator 方法 1.1 定义迭代器对象 迭
JS 有哪些迭代器,该如何使用?
Posted on:2024年8月14日 at 12:21迭代器分类 在 JavaScript 中,有三种类型的迭代器: Array Iterator(数组迭代器):通过对数组进行迭代以访问其元素。 String Iterator(字符串迭代器):通过对字符串进行迭代以访问其字符。 Map Iterator(映射迭代器)和 Set Iterator(集合迭代器):通过对 Map 和 Set 数据结构进行迭代以访问其键和值。 此外,在 ES6 中,我们还可
ES6中数组新增了哪些扩展?
Posted on:2024年7月22日 at 15:41以下是一些 ES6 中数组新增的扩展: 扩展运算符(Spread operator):使用 ... 语法可以将一个数组展开成多个独立的元素,或者将多个元素合并为一个数组。 Array.from():通过类似数组的对象或可迭代对象创建一个新的数组。 Array.of():创建一个由传入参数组成的新数组。 find() 和 findIndex():用于在数组中查找满足指定条件的第一个元素及其索引。 i
JavaScript中的简单数据类型有哪些?
Posted on:2024年7月22日 at 15:41JavaScript 中的简单数据类型包括以下几种: 字符串(String):用于表示文本数据,用引号(单引号或双引号)包裹起来,例如:"Hello, World!"。 数字(Number):用于表示数值数据,包括整数和浮点数(带小数点的数),例如:42、3.14。 布尔值(Boolean):用于表示逻辑值,只有两个可能的取值:true(真)和false(假)。 undefined:表示未定义的值
symbol 有什么用处?
Posted on:2024年7月22日 at 15:40ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScrip
说说对 ES6 中rest参数的理解
Posted on:2024年7月22日 at 15:40ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, 5, 3) /
Map 和 Set 的用法以及区别
Posted on:2024年7月22日 at 15:40首先了解一下 Map Map 是一组键值对的结构,和 JSON 对象类似。 (1) Map数据结构如下 这里我们可以看到的是Map的数据结构是一个键值对的结构 (2) key 不仅可以是字符串还可以是对象 var obj ={name:"小如",age:9} let map = new Map() map.set(obj,"111") 打印结果如下 (3) Map常用语法如下 //初始化`Map`
什么是 let 的临时性死区?
Posted on:2021年7月11日 at 16:10let 会产生临时性死区,在当前的执行上下文中,会进行变量提升,但是未被初始化,所以在执行上下文执行阶段,执行代码如果还没有执行到变量赋值,就引用此变量就会报错,此变量未初始化。