关键词搜索

全站搜索×
注册会员
×

已有账号? 请点击

使用其他方式登录

ES6深入async函数和Symbol类型实例讲解

发布2022-06-21浏览19次

详情内容

这是一个

ES6深入async函数和Symbol类型实例讲解,本文会简要介绍 async 函数和 ES6 的 Symbol 类型。

一、async 函数

其语法格式如下:

async function name([param[, param[, ... param]]]) { statements }


  • name: 函数名称。

  • param: 要传递给函数的参数的名称。

  • statements: 函数体语句。

返回值 async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

二、async 案例

示例,新建一个名为 helloAsync.js 的文件,在其中写入以下代码。

// helloAsync.jsasync function helloAsync() {
  return "helloAsync";}console.log(helloAsync()); // Promise {<resolved>: "helloAsync"}helloAsync().then((v) => {
  console.log(v); // helloAsync});


在终端使用以下命令运行。

node helloAsync


可以看到,以下结果:
请添加图片描述

三、Symbol 类型

ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:Undefined 、Null 、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。

Symbol 值通过 Symbol 函数生成。对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,都是独一无二的,可以保证不会与其他属性名产生冲突。

四、Symbol 属性

创建 Symbol 类型的变量,语法如下:

var s = Symbol(["message"]);


Symbol 函数的 message 可以省略,表示对当前 Symbol 值的描述,用于区分 Symbol 变量。

示例,新建一个名为 test1.js 的文件,在其中写入以下代码。

// test1.jsvar p1 = Symbol();var p2 = Symbol("zhangsan");console.log(p1); // Symbol()console.log(p2); // Symbol(zhangsan)


在终端运行之后,会得到以下结果:
请添加图片描述

Symbol 类型还可以用于定义一组常量,保证这组常量的值都是不相等的。

示例,新建一个名为 test2.js 的文件,在其中写入以下代码。

// test2.jsconst log = {};log.levels = {
  DEBUG: Symbol("debug"),
  INFO: Symbol("info"),
  WARN: Symbol("warn"),};console.log(log.levels.DEBUG, "debug message");console.log(log.levels.INFO, "info message");


在终端运行之后,会得到以下结果:
请添加图片描述

五、Symbol 方法

其语法格式如下所示:

Symbol([description]);


ES5 时,声明对象属性通常使用的是字符串,ES6 中提供了 Symbol,使用 Symbol 可以作为对象的属性名。

示例,新建一个名为 test3.js 的文件,在其中写入以下代码。

// test3.jsvar pname = Symbol("lisi");var age = Symbol();var sex = Symbol();var person = {
  // 给 person 对象添加属性 pname 并赋值
  [pname]: "zhangsan",};// 给 person 对象添加属性 age 并赋值person[age] = 18;// 给 person 对象添加属性 sex 并赋值Object.defineProperty(person, sex, { value: "male" });console.log(person[pname]); // 'zhangsan'console.log(person[age]); // 18console.log(person[sex]); // malevar p = Object.getOwnPropertySymbols(person);console.log(p); // Symbol(lisi), Symbol(), Symbol()


在终端运行之后,会得到以下结果:
请添加图片描述

六、其他

Symbol.for() 是接收一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 Symbol 值。Symbol() 写法没有登记机制,所以每次调用都会返回一个不同的值。

Symbol.keyFor() 是返回一个已登记的 Symbol 类型值的 key

示例,点击 File -> New File 新建一个名为 test4.js 的文件,在其中写入以下代码。

// test4.jsvar s1 = Symbol.for("aaa");var s2 = Symbol.for("aaa");console.log(s1 === s2); // truevar s3 = Symbol.for("aaa");console.log(Symbol.keyFor(s3)); // "aaa"var s4 = Symbol("aaa");console.log(Symbol.keyFor(s4)); // undefined


在终端运行之后,会得到以下结果:
请添加图片描述

总结

本文讲解了 async 函数的语法、案例;以及 ES6 的 Symbol 类型概念、属性、方法。

,可点击上面演示按钮看HTML页面效果,有需要可直接下载或开通SVIP终生会员全站免费下载。
点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
  • 支付宝付款
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载