首页 > 其他分享 >ES6简单入门

ES6简单入门

时间:2022-10-01 13:02:12浏览次数:72  
标签:ES6 const 函数 解构 参数 简单 变量 入门

前言

  • 有关ES6详情​​参考​
  • ES6是ECMAScript6,js的核心是ECMAScript

入门

  • var声明的变量作用域为全局
  • ES6新增了let,声明的变量作用域为代码块,也即是作用域为某个函数,因此在同一个函数中不可以重复声明同一个变量;且不存在变量提升
  • const声明一个只读的常量,声明后不可改变,只有在块级作用域中有效,只有在声明后使用
  • 解构赋值
# 数组解构赋值
let [a, b, c] = [1, 2, 3]; //左边的变量会赋对应的值
let [x, , y] = [1, 2, 3]; // 解构不成功,变量的值为undefined
let [x, y] = [1, 2, 3]; //不完全解构(只解构一部分),解构会成功

# 对象的解构赋值
const user = {
username: "狗蛋",
age: 20,
sex: 1,
status: 200
}
const {age, sex, username} = user //不完全解构赋值,这里将user对象赋值给 {age, sex, username}

# 字符串的解构赋值
const [a, b, c, d, e] = 'hello';

# 数值和布尔值的解构赋值

# 函数参数的解构赋值
  • 为函数参数设置默认值
 function Point(x = 0, y = 0) {  //直接写在参数后面
this.x = x;
this.y = y;
}
  • 函数参数设置默认值与解构赋值结合
  function m1({x = 0, y = 0} = {}) {
return [x, y];
}
  • 函数的参数设置了默认值建议放在尾部,因为函数传参是从左往右赋值
  function f(x, y = 5, z) {   //这里设置了默认值的参数没有放在尾部
return [x, y, z];
}
f() // [undefined, 5, undefined]
f(1) // [1, 5, undefined],传的参数赋给了x
# 函数的参数在指定默认值后,length属性将由1变成0
  • ​rest​​参数可以看成一个数组,可以传入多个参数,写法更加简洁
  function add(...values) {

}
  • ​箭头函数​
  var f = v => v;      //箭头前表示参数,箭头后表示返回值
var sum = (num1, num2) => num1 + num2; //多个参数用小括号
# 代码块部分多余一条语句则需用大括号括起来
# 返回的是一个对象时,需用小括号括起来
  • 扩展运算符:将一个数组转为用逗号分隔的参数序列
  const numbers = [4, 38];   //有一个数组numbers
add(...numbers) // 42,这里的add方法是将传入的参数相加,那么这里使用扩展运算符,将数组转为参数,即是数组中所有值相加

# ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法
var username //这是一个变量
const user = { //这里将变量作为对象的属性写在大括号中
username: "狗蛋",
age: 20,
sex: 1,
status: 200
}
  • ​js的数据类型​
# undefined  null  boolean  String  number  object  Symbol
# 为了区分变量和属性使用类型symbol,属于该类型的属性是独一无二的
let s = Symbol(); // 通过symbol函数生成变量s
let mySymbol = Symbol(); // 生成一个变量作为属性
// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';
// 第二种写法
let a = {
[mySymbol]: 'Hello!'
};
  • Set和Map数据结构
  const s = new Set();   # 创建一个Set数组s,存储的值不可重复,add()方法可向数组添加值,Set()函数可接收一个数组用于初始化
const m = new Map(); # 创建一个Map数组m,set()方法添加键值对,get()方法读取某个键值对,delete()删除
  • ​Promise对象​
  const promise = new Promise(function(resolve, reject) {    //创建promise对象实例
// ... some code
if (/* 异步操作成功 */){
resolve(value); //该函数将实例的状态从'未完成'变成'成功'
} else {
reject(error); //该函数将实例的状态从'未完成'变成'失败'
}
});

promise.then(function(value) { //then方法分别指定resolved状态和 rejected状态的回调函数
// success
}, function(error) {
// failure
});

# ES6的遍历器是一种接口,一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历命令 for...of 循环

# async 函数返回一个 Promise对象,可以使用 then方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句
  • ES6中class
  class Student {
//无参构造函数
constructor() {

}
constructor(name, age) { //有参构造器
this.name = name
this.age = age
}
sayName() { //普通方法
return this.name
}
}
const student = new Student("狗蛋") //创建实例
console.log(student.sayName())

// ES6 class的继承
class Point {
}
class ColorPoint extends Point {
}
  • 自定义模块和引入
  # nodejs中
# 方式一:
module.exports = { // 封装为一个对外的接口,可通过require方法引入
//模块的具体实现
}
const 模块名 = require('./要导入的模块路径')
# 方式二:
exports.模块名 = function ( ){};
const 模块名 = require("./模块路径");
# 区别:
# exports 返回的是模块函数
# module.exports 返回的是模块对象本身,返回的是一个类
# exports的方法可以直接调用
# module.exports需要new对象之后才可以调用

# ES6中
# 方式一:
exprot {方法一,方法二} //自定义模块
Import {方法一,方法二} from "./模块所在路径"
# 方式二:
export { 方法名 as 别名 } //定义模块时设置别名
import { 别名 } from "./test.js"; // 引入时
export { 方法名 }
import { 方法名 as 别名 } from "./test1.js"; //也可以在引入时设置别名
  • ​js中的变量​​​ 函数中定义的局部变量在调用执行后被销毁
    而循环等中的变量是不会被销毁的,没有块作用域
    函数方法中定义的变量未用var申明,则为全局变量
  • Java中的可变参数
  public static void test(String... args) {   //最后一个形参前加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入
for(String arg : args) {
System.out.println(arg);
}
}

# 只有函数的最后一个参数可作为可变参数,其前可有其他普通参数,所以函数只能有一个可变参数
# 可变参数会被转化为一个数组

# Java 中的迭代器iterator相当于一个容器,可用于遍历操作集合
  • ES6对象增强
  • ES6简单入门_赋值

  • 当key和value一致时,可忽略后面的value
  • ES6简单入门_默认值_02

  • ​模板字符串​
  var str = "My age is " + (a + b) + " and I love " + c;      // 字符串拼接的方式
const str = `My age is ${a+b} and I love ${c}`; // 使用反撇号的方式拼接,直接用${}传值
# 模板字符串可多行输出,以及使用标签
# ${}中的大括号里可以放入任意的JavaScript表达式进行运算,以及引用对象属性,也可调用函数方法

​详情参考​



标签:ES6,const,函数,解构,参数,简单,变量,入门
From: https://blog.51cto.com/chniny/5728249

相关文章

  • CSS入门学习笔记
    CSS入门学习笔记一、CSS简介1、什么是CSS?2、为什么使用CSS?3、CSS的作用二、CSS语法1、CSS基础语法2、CSS注释语法3、CSS应用方法三、CSS选择器1、元素选择器2、类选择器3、......
  • 线段树的简单扩展及应用
    线段树的简单扩展及应用参考:线段树的高级用法-Alex_Wei注:这篇文章只开了个头就鸽了,如果真的准备学到点什么的话可以直接点上面这篇文章(前言线段树作为一种有效维护区......
  • CSS入门学习笔记
    CSS入门学习笔记一、CSS简介1、什么是CSS?2、为什么使用CSS?3、CSS的作用二、CSS语法1、CSS基础语法2、CSS注释语法3、CSS应用方法三、CSS选择器1、元素选择器2、类选择器3、......
  • flask后端简单demo
    1、flaskdemofromflaskimportFlask,Blueprint,requestfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)#数据库app.config['SQLALCHEMY_TRACK......
  • HTML入门笔记
    HTML入门笔记目录 一、HTML简介1、HTML是什么?2、什么是HTML标签?二、HTML文档结构1、HTML基本结构2、文档类型声明标签3、lang语言属性4、字符集与编码三、HTML基础......
  • 简单-1694. 重新格式化电话号码
    给你一个字符串形式的电话号码 number 。number 由数字、空格 ''、和破折号 '-' 组成。请你按下述方式重新格式化电话号码。首先,删除 所有的空格和破折号。其......
  • 使用 Fuse 和 java 17 编写一个简单的文件系统
    使用Fuse和java17编写一个简单的文件系统Photoby扬·安东宁·科拉尔on不飞溅目标是探索ProjectPanama的外部链接器功能并创建我们的简单文件系统。我们将......
  • nohup训练pytorch模型时的报错以及tmux的简单使用
    问题:在使用nohup命令后台训练pytorch模型时,关闭ssh窗口,有时会遇到下面报错:WARNING:torch.distributed.elastic.agent.server.api:Received1deathsignal,shuttingdo......
  • 企业转型数字化,入门应该选择哪个类型?
    入门不是选择哪个类型的问题,而是先要认知自己,否则盲目的进行数字化转型,失败的可能性将非常大!在正确的道路上加快步伐能取得更早的成功,但选择错了,那是背道而驰!所以,进行数字......
  • nonebot2插件入门-你的第一个机器人插件(发送文字消息)
    机器人需要各种插件来实现各种功能,只有个机器人框架是不够的。......