首页 > 其他分享 >JS-ES6标准

JS-ES6标准

时间:2024-11-03 22:58:38浏览次数:2  
标签:ES6 const log 对象 JS 标准 promise console 函数

JS-ES6标准

箭头函数

  1. 更简洁的语法:箭头函数允许你不使用function关键字来定义函数。
  2. 隐式的return:如果箭头函数的函数体只有一个表达式,那么这个表达式的值会被隐式返回,不需要return关键字。
  3. 不绑定自己的this:箭头函数不会创建自己的this上下文,this值由外围最近一层非箭头函数决定。
// 基本形式
let sum = (a, b) => a + b;

// 无参数
let sayHello = () => 'Hello';

// 单参数
let triple = n => n * 3;

// 多行函数体
let add = (a, b) => {
  let result = a + b;
  return result;
};

// 调用
console.log(add(1, 2));

解构赋值

从数组或对象中提取数据,并将其赋值给变量。

解构赋值可以用于数组、对象、字符串,甚至用于函数参数的默认值。

数组解构

const [变量名1, 变量名2, ...] = 数组

const arr = ['red', 1, true]

// 数组的解构: 根据数组元素的顺序
const [a, b, c, d = 100] = arr
console.log(a, b, c, d)

// 展开运算符..., 剩余参数
const [red, ...res] = arr
console.log(red, res)

对象解构

const obj = {
  name: 'xiaoming',
  // ES6中方法的简写
  sayHi() {
    console.log('hi')
  },
}
//   1. 根据对象的属性名解构
//   2. 不是根据对象属性的顺序
const { name, sayHi } = obj

// 给不存在的属性赋初始值
const { name = 'new', age = 20 } = obj  // xiaoming 20

别名: const {属性名1:别名, 属性名2:别名} = 对象

const obj = {
  name: 'xiaoming',
  gf: {
    name: 'xiaomei',
  },
}

const {
  name,
  gf: { name: gfName },
} = obj
console.log(name, gfName) // xiaoming xiaomei

promise对象

属性

promise对象有两个属性

  • 状态
  • 结果

状态:

  • pending: 准备
  • fulfilled: 成功
  • rejected: 失败
// 创建一个promise对象
//  1. Promise接收一个函数作为参数
//  2. promise对象(属性和方法)
//      - 状态 pending, fulfilled, rejected
//      - 结果
// 3. promise状态的改变是单向, 不可逆, 状态的改变是一次性
// 只能从pending => fulfilled / rejected

const p1 = new Promise((resolve, reject) => {
  // 当调用resolve函数, 当前promise对象的状态从 pending => fulfilled(成功)
  resolve()
  // 当调用reject函数, 当前promise对象的状态从 pending => rejected(失败)
  reject()
})
console.log(p1)

方法

  • then方法, 获取promise对象的结果
  • catch 方法, 处理失败的情况
const myPromise = new Promise((resolve, reject) => {
  // 做一些异步操作,然后:
  if (/* 条件成功 */) {
    resolve('成功的结果值');
  } else {
    reject('失败的原因');
  }
});
// then方法接受两个参数做为参数
// 第一个函数: 成功的回调函数, 当p1对象的状态是成功时, 会调用
// 第二个函数: 失败的回调函数, 当p1对象的状态是失败时, 会调用
// 返回一个新的promise的对象
const p1 = myPromise.then(
  result => {
    // 当Promise被解决(resolved)时的代码
    console.log(result); // '成功的结果值'
  },
  err => {
    console.log(err); // '失败的原因'
  })
  
myPromise.catch(error => {
    // 当Promise被拒绝(rejected)时的代码
    console.error(error); // '失败的原因'
  });

async...await

  • async 关键字用于声明一个异步函数。这个函数会返回一个 Promise 对象。
  • await 关键字用于等待一个异步操作的结果。它只能在 async 函数内部使用。
//  async: 写在函数的前面
//  1. 可以单独使用.
//  2. 将返回值包装成一个promise对象
async function foo() {
  // return Promise.resolve(123)
  return 123
}
console.log(foo())

// 获取123的值
foo().then((value) => {
  console.log(value)
})

// await: 后面跟一个promise
//  1. 不能单独使用. 配合async使用
//  2. 表达式的值 就是 promise的结果

async function test() {
  // 如果await后面不是一个promise对象, 会自动转换成promise对象
  const res = await foo()
  console.log(res)
}
test()

ES Module

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 
      1. 在script标签中, 使用type="module", 形成了独立的模块
      2. 模块之间是互相独立的. 只能使用本模块中定义的变量, 函数, 类
    -->
    <script type="module">
      const str = 'xiaoming'
    </script>
    <script type="module">
      console.log(str)
    </script>
  </body>
</html>

导出

export

  • 变量
  • 函数
// 导出变量
export const str = 'str'

// 导出函数
export function foo() {
  console.log('foo')
}

// 导出类
export class Person {
  constructor(n) {
    this.name = n
  }
}

导入

在一个js文件中, 通过import导入

在一个html文件中, 通过<script type="module">导入

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script type="module">
      // 1. 通过 export 导出
      // 2. 通过 import 导入
      import { str, foo, Person } from './test.js'
      console.log(str)
      foo()
      const p = new Person('xiaoming')
      console.log(p)
    </script>
  </body>
</html>

默认导入导出

// 一个模块只能有一个默认导出
export default function () {
  console.log('hello')
}

// 不写括号: 表示导入 另一个模块中 默认导出的内容
import fn from './02-默认导出.js'
console.log(fn)

标签:ES6,const,log,对象,JS,标准,promise,console,函数
From: https://www.cnblogs.com/khrushchefox/p/18524166

相关文章

  • 基于nodejs+vue悦全公司人事管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于人事管理系统的研究,现有研究主要集中在通用型人事管理系统的构建与功能实现上,如常见的用户管理、数据备份等功能的实现 [2] 。专门针对悦全公司这......
  • Threejs渲染3D字体介绍
    概述本文主要介绍如何通过Three.js生成3D文本。效果展示代码分析核心代码部分就是通过Three.js中的FontLoader和TextGeometry来加载字体并创建3D文本。核心代码如下:constloader=newFontLoader();loader.load(textFamily.value,function(font){......
  • C 语言标准库 - <limit.h>
    简介<limits.h> 是C标准库中的一个头文件,定义了各种数据类型的限制。这些宏提供了有关整数类型(char、short、int、long 和 longlong 等)和其他数据类型的最大值和最小值的信息。这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是255。......
  • 华为OD机试-E卷,100分 - 最小的调整次数特异性双端队列Java & Python& JS & C++ & C
    最新华为OD机试题目描述有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。小A依次执行2n个指令往队列中添加数据和移出数据。其中n个指令是添加数据(可能从头部添加、也可能从尾部添加),依次添加1到n;n个指令是移出数据。现在要求移除数据的顺......
  • 华为OD机试-E卷100分 -货币单位换算Java & Python& JS & C++ & C
    最新华为OD机试题目描述记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃......
  • 学生信息管理系统标准版
    0.绪论学生信息管理系统需要包含增加学生信息,删除学生信息,查找学生信息,更新学生信息,查看学生信息,对学生信息进行排序等。下面进行逐一介绍。1.头文件1.1.头文件守卫#ifndefSTULIB_H#defineSTULIB_H#define_CRT_SECURE_NO_WARNINGS#endif1.2.头文件#include<s......
  • 金融标准体系
    目录基本原则标准体系结构图标准明细表金融标准体系下载地址基本原则需求引领、顶层设计。坚持目标导向、问题导向、结果导向有机统一,构建支撑适用、体系完善、科学合理的金融标准体系。全面系统、重点突出。以金融业运用有效、保护有力、管理高效......
  • json-server详细模拟GET、POST、DELETE等接口数据教程
    引言在前端开发过程中,我们经常需要在后端API尚未就绪的情况下模拟接口数据。json-server是一个强大而灵活的工具,可以帮助我们快速创建一个模拟的RESTfulAPI。本文将详细介绍如何使用json-server来模拟GET、POST、PUT、PATCH、DELETE等常用的HTTP方法,以及如何处理复杂的数......