当前位置:网站首页>ES6 drill down - Async functions and symbol types
ES6 drill down - Async functions and symbol types
2022-07-05 16:03:00 【Braised snapper with orange cat】
List of articles
Preface
This article will briefly introduce async Functions and ES6 Of Symbol type .
One 、async function
The syntax is as follows :
async function name([param[, param[, ... param]]]) {
statements }
- name: The name of the function .
- param: The name of the parameter to be passed to the function .
- statements: Function body statement .
Return value async The function returns a Promise object , have access to then Method to add a callback function .
Two 、async Case study
Example , Create a new one called helloAsync.js The file of , Write the following code in it .
// helloAsync.js
async function helloAsync() {
return "helloAsync";
}
console.log(helloAsync()); // Promise {<resolved>: "helloAsync"}
helloAsync().then((v) => {
console.log(v); // helloAsync
});
Run the following command on the terminal .
node helloAsync
You can see , The following results :
3、 ... and 、Symbol type
ES6 A new type of raw data is introduced Symbol, Represents a unique value . It is JavaScript The seventh data type of language , The first six are :Undefined 、Null 、 Boolean value (Boolean)、 character string (String)、 The number (Number)、 object (Object).
Symbol Value through Symbol Function generation . Object property names can now be of two types , One is the original string , The other is the new Symbol type . All attribute names belong to Symbol type , They are unique , You can ensure that there is no conflict with other property names .
Four 、Symbol attribute
establish Symbol Variable of type , The grammar is as follows :
var s = Symbol(["message"]);
Symbol Functional message It can be omitted , Indicates the current Symbol Description of value , Used to distinguish Symbol Variable .
Example , Create a new one called test1.js The file of , Write the following code in it .
// test1.js
var p1 = Symbol();
var p2 = Symbol("zhangsan");
console.log(p1); // Symbol()
console.log(p2); // Symbol(zhangsan)
After the terminal runs , You will get the following results :
Symbol Types can also be used to define a set of constants , Make sure that the values of these constants are not equal .
Example , Create a new one called test2.js The file of , Write the following code in it .
// test2.js
const 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");
After the terminal runs , You will get the following results :
5、 ... and 、Symbol Method
The syntax is as follows :
Symbol([description]);
ES5 when , Declaring object properties usually uses strings ,ES6 Provided in Symbol, Use Symbol It can be used as the attribute name of the object .
Example , Create a new one called test3.js The file of , Write the following code in it .
// test3.js
var pname = Symbol("lisi");
var age = Symbol();
var sex = Symbol();
var person = {
// to person Object add properties pname And the assignment
[pname]: "zhangsan",
};
// to person Object add properties age And the assignment
person[age] = 18;
// to person Object add properties sex And the assignment
Object.defineProperty(person, sex, {
value: "male" });
console.log(person[pname]); // 'zhangsan'
console.log(person[age]); // 18
console.log(person[sex]); // male
var p = Object.getOwnPropertySymbols(person);
console.log(p); // Symbol(lisi), Symbol(), Symbol()
After the terminal runs , You will get the following results :
6、 ... and 、 other
Symbol.for() Is to receive a string as a parameter , Then search whether there is a parameter named Symbol value . If there is , I'm just going to return this Symbol value , Otherwise, it will create and return a string named Symbol value .Symbol() There is no registration mechanism , So each call will return a different value .
Symbol.keyFor() Is to return a registered Symbol The type is worth key.
Example , Click on File -> New File Create a new one called test4.js The file of , Write the following code in it .
// test4.js
var s1 = Symbol.for("aaa");
var s2 = Symbol.for("aaa");
console.log(s1 === s2); // true
var s3 = Symbol.for("aaa");
console.log(Symbol.keyFor(s3)); // "aaa"
var s4 = Symbol("aaa");
console.log(Symbol.keyFor(s4)); // undefined
After the terminal runs , You will get the following results :
summary
This article explains async Syntax of functions 、 Case study ; as well as ES6 Of Symbol Type concept 、 attribute 、 Method .
The following explains ES6 Class class .
边栏推荐
- Research and practice of super-resolution technology in the field of real-time audio and video
- 18.[stm32] read the ROM of DS18B20 temperature sensor and realize multi-point temperature measurement
- RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
- Basic JSON operations of MySQL 5.7
- Data communication foundation NAT network address translation
- 异常com.alibaba.fastjson.JSONException: not match : - =
- obj集合转为实体集合
- 项目sql中批量update的时候参数类型设置错误
- 19.[STM32]HC_ SR04 ultrasonic ranging_ Timer mode (OLED display)
- Five common negotiation strategies of consulting companies and how to safeguard their own interests
猜你喜欢

Data communication foundation - route republication

Pits encountered in the use of boolean type in development

F. Min cost string problem solving Report

Intelligent metal detector based on openharmony

Appium automation test foundation - appium basic operation API (II)

Information collection of penetration test

通过的英特尔Evo 3.0整机认证到底有多难?忆联科技告诉你

五种常见的咨询公司谈判策略以及如何维护自己的利益

Quick completion guide for manipulator (IX): forward kinematics analysis

超分辨率技术在实时音视频领域的研究与实践
随机推荐
Li Kou today's question -729 My schedule I
String modification problem solving Report
MySQL 巨坑:update 更新慎用影响行数做判断!!!
通过的英特尔Evo 3.0整机认证到底有多难?忆联科技告诉你
开发中Boolean类型使用遇到的坑
The list set is summed up according to a certain attribute of the object, the maximum value, etc
Defining strict standards, Intel Evo 3.0 is accelerating the upgrading of the PC industry
vulnhub-Root_ this_ box
MySQL overview
定义严苛标准,英特尔Evo 3.0正在加速PC产业升级
21. [STM32] I don't understand the I2C protocol. Dig deep into the sequence diagram to help you write the underlying driver
CODING DevSecOps 助力金融企业跑出数字加速度
Analytic hierarchy process of mathematical modeling (including Matlab code)
obj集合转为实体集合
数学建模之层次分析法(含MATLAB代码)
The difference between abstract classes and interfaces
Transfer the idea of "Zhongtai" to the code
Data communication foundation - routing communication between VLANs
Verilog realizes the calculation of the maximum common divisor and the minimum common multiple
Cs231n notes (medium) -- applicable to 0 Foundation