当前位置: 首页 > 编程日记 > 正文

ES6常用语法

主要总结一些 ES6 常用的语法及知识点,其次就是总结一下在 ES6 使用过程需要注意的重点

常用语法

常量

// es5常量
var person = {'name': 'shi'
}
Object.defineProperty(person, 'sex', {writable: false,value: 'man'
})// es6常量
const sex = 'man';
复制代码

多行字符串和模板变量

方便了很多,不需要在拼接字符串的时候换行使用加号拼接

let name = 'shi';
let age = 20;
let html = `<div><p>${name}</p><p>${age}</p>
</div>`;
复制代码

结构赋值

在 es5 中获取对象或者数组的某个值是下面这样的操作

// 获取对象其中的值
var obj = {a: 2,b: 4
};var a = obj.a;
var b = obj.b;
console.log(a);
console.log(b);// 获取数组中的值
var arr = [1, 2, 3];
var arr1 = arr[0];
复制代码

在 es6 中相对来说就很方便了,请看下面的例子

// 获取对象中的值
const obj = {a: 2,b: 4,c: 5
};const { a, c } = obj;
console.log(a);
console.log(c);// 获取数组中的值
const arr = [1, 3, 4];
const [a, b, c] = arr;
复制代码

箭头函数

不改变this的指向,this指向定义时候的实例

() => {}
复制代码

块级作用域

// let
const arr = [];
for (let index = 0; index < 3; index++) {arr[index] = function () {return index * 2;}
}
console.table([arr[0](),   //0arr[1](),   //2arr[2]()    //4
]);// var
const arr1 = [];
for (var i = 0; i < 3; i++) {arr1[i] = function () {return i * 2;}
}console.table([arr1[0](),      //6arr1[1](),      //6arr1[2]()       //6
]);
复制代码

默认参数

默认参数

function f (x, y = 7, z = 21) {return x+y+z
}
复制代码

必填参数检查

es6还可以对必填参数进行检查

function checkParams() {throw new Error('params can\'t be empty')
}function f(x=checkParams(), y = 2, z = 3) {return x + y + z;
}try {f();
} catch (error) {console.log(error)
}
复制代码

可变参数操作

用一个求和的例子去说明es6对于可变参数的操作

// ES5对数据可变参数进行求和
function sum() {// arguments是伪数组,需要通过array的原型方法对其进行操作var arr = Array.prototype.slice.call(arguments);var sum = 0;arr.forEach(function (item) {sum += item * 1;});return sum;
}
console.log(sum(1, 2, 3, 6));// ES6对于可变参数进行求和
// ...扩展运算符
function sum1(...arr) {let sum = 0;arr.forEach(item => {sum += item * 1;});return sum;
}
console.log(sum1(1, 2, 3, 6));
复制代码

扩展运算符

有很多用途,这里只是简单的介绍一下

  • 数组合并
// es5写法
var params = [1, true, 'test'];
var arr = [2, '合并'].concat(params);
console.log(arr);// es6的写法
var params = [1, true, 'test'];
var arr = [2, '合并', ...params];
console.log(arr);
复制代码

继承

在 es5 中继承都是绑定原型,实现继承

例子:

function Animal() {this.eat = function() {console.log('Animal eat');};
}function Dog() {this.bark = function() {console.log('Dog bark');};
}// 绑定原型,实现继承
Dog.prototype = new Animal();var hashiqi = new Dog();hashiqi.bark();
hashiqi.eat();
复制代码

在 es6 中通过使用 class 定义原型及实现原型的继承

class Animal {constructor(name) {this.name = name;}eat() {alert(this.name + 'eat');}
}class Dog extends Animal {constructor(name) {super(name);this.name = name;}say() {alert(this.name + 'say');}
}const dog = new Dog('哈士奇');dog.say();
dog.eat();
复制代码

重点问题

有时候前端面试可能会用到哦

Class 和普通构造函数有什么区别

  • Class 在语法上更加贴合面向对象的写法
  • Class 实现继承更加易读,易理解
  • Class 更加易于 java 等后端学习
  • 本质还是语法糖,还是使用 prototype

promise 基本使用

其他

本篇文章只是 ES6 中很小的一部分,ES6开发很方便,想详细学可以看阮一峰老师的 ECMAScript 6 入门

相关文章:

【NCEPU】吴丹飞:(CSAPP)计算机系统漫游

吴丹飞是华北电力大学数理系大三的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习&#xff0c;荣获多期优秀队长的称号。 希望参与我们线下组队学习的同学&#xff0c;可以在微信公众号后台回复 线下…

Python字符串类型及操作总结

1.字符串表示 两种类型四种表示 单行-一对单引号或一对双引号 “python” ‘python’ 多行-一对三单引号或一对三双引号 ‘’’python’’’ “””python””” (三单引号形成的是字符串&#xff0c;但也可以用作多行注释) 如果字符串中出现双引号&#xff0c;则两边要用单引…

python利用wx.grid网格显示数据

首先需要定义类似数据模板的类。 import wx.grid as gridclass MyDataTable(grid.PyGridTableBase):def __init__(self,data,colLabelsNone):grid.PyGridTableBase.__init__(self)self.colLabels colLabelsself.data datadef GetNumberRows(self):return len(self.data)def G…

Linux Test Project 测试套件说明

LTP&#xff08;Linux Test Project&#xff09; Linux Test Project 是由SGI、OSDL和Bull开发和维护的一个项目&#xff0c;由IBM、思科、富士通、SUSE、Red Hat、Oracle和其他公司共同开发和维护。该项目的目标是向开源社区提供测试用例&#xff0c;以验证Linux的可靠性、健壮…

Python time库的使用总结

1. 简介 time库是Python中处理时间的标准库 -计算机时间的表达 -提供获取系统时间并格式化输出功能 -提供系统级精确计时功能&#xff0c;用于程序性能分析 2. 用法 import time time.() 3. 函数 主要有三类&#xff1a; -时间获取&#xff1a;time() ctime() gmtime() -时…

Android静态变量的生命周期

Android是用Java开发&#xff0c;其静态变量的生命周期遵守Java的设计。我们知道静态变量是在类被load的时候分配内存的&#xff0c;并且存在于方法区。当类 被卸载的时候&#xff0c;静态变量被销毁。在PC机的客户端程序中&#xff0c;一个类被加载和卸载&#xff0c;可简单的…

Python3基础笔记---面向对象

只是对一些新的知识的记录 1、创建类 class ClassName:<statement-1>...<statement-N> 类实例化后&#xff0c;可以使用其属性&#xff0c;实际上&#xff0c;创建一个类之后&#xff0c;可以通过类名访问其属性。 __init__() 方法可以有参数 2、方法 &#xff08;…

【NCEPU】凌亮:Linux实践

凌亮是华北电力大学数理系大二的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习。 这篇图文是他在每周五晚参加线下组队学习活动时的分享。 希望参与我们线下组队学习的同学&#xff0c;可以在微信…

Python控制结构总结

-程序的控制结构共三种 顺序结构&#xff1a;程序按照线性顺序逐渐执行 分支结构&#xff1a;程序根据条件有选择的向程序运行方向执行 循环结构&#xff1a;程序根据一定条件在运行之后返回执行 一、分支结构 单分支结构 if <条件>&#xff1a;<语句块>类似&am…

MP实战系列(二)之集成swagger

其实与springspringmvcmybatis集成swagger没什么区别&#xff0c;只是之前写的太不好了&#xff0c;所以这次决定详细写。 提到swagger不得不提rest,rest是一种架构风格&#xff0c;里面有对不同的资源有不同的请求标识。例如PUT,POST,GET,DELETE&#xff0c;OPTIONS,HEAD,PATC…

Task04:青少年软件编程(Python)等级考试模拟卷(一级)

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程&#xff08;Python&#xff09;一级训练营 试题来源 青少…

Python 解决一行代码分成多行及多行代码放在一行

一行代码分成多行 使用 目的&#xff1a;当某一行代码较长&#xff0c;可以增强程序的可读性 for k in range(N):pi 1/pow(16,k)*(\4/(8*k1) - 2/(8*k4) - \1/(8*k5) - 1/(8*k6)) print("圆周率值是&#xff1a;{}".format(pi))多行代码放在一行 使用分号 目的:可…

Task05:青少年软件编程(Python)等级考试模拟卷(一级)

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程&#xff08;Python&#xff09;一级训练营 试题来源 青少…

控件的实际大小与呈现大小

实际大小&#xff1a; label_Mark.Width 100; label_Mark.Height100; 呈现大小&#xff1a; label_Mark.RenderSize new Size(50, 50);转载于:https://www.cnblogs.com/changbaishan/p/3406004.html

MXNet动手学深度学习笔记:卷积计算

为什么80%的码农都做不了架构师&#xff1f;>>> #coding:utf-8卷积计算import mxnet as mx from mxnet.gluon import nn from mxnet import ndarray as nd# 卷积层 # 输入输出的数据格式是&#xff1a; batch * channel * height * width # 权重格式&#xff1a;ou…

Python求100以内的素数和并输出

#求100以内的素数并输出 def isPrime(num):for i in range(2,num):if num%i 0:return Falsereturn True sum 2#1不是素数&#xff0c;2是素数#对[3,100)内的整数逐一进行判断 for i in range(3,100):if isPrime(i):sum iprint(sum)优化版&#xff1a; from math import sqr…

Android KTV

KTV声音实时回放 http://www.cnblogs.com/mythou/tag/android/ Android上用speex做回音消除 http://blog.csdn.net/fireworkburn/article/details/12781985 Android 平台语音通话及回音消除、噪音消除研究 http://blog.csdn.net/AudioAEC/article/details/12685921 Android 实时…

毛慧昀:决策树实现对鸢尾花数据集的分类

毛慧昀是华北电力大学计算机系大三的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习&#xff0c;荣获多期优秀队长的称号。 这篇图文是她在每周五晚参加线下组队学习活动时的分享。 希望参与我们线…

golang strings.Fields 使用

2019独角兽企业重金招聘Python工程师标准>>> s : "Hello 世\n界!\tHe\vl\flo!" ss : strings.Fields(s) 输出 ["Hello" "世" "界!" "He" "l" "lo!"] 分割规则是 var asciiSpace [256]uint8…

Python 用户的三次登录机会

描述 给用户三次输入用户名和密码的机会&#xff0c;要求如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬…

Realm_King 之 .NET操作XML完整类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Web; namespace BLL{ public class XmlDoc { /// <summary> /// 创建Xml文件 /// </summary> /…

全网把Map中的hash()分析的最透彻的文章,别无二家。

你知道HashMap中hash方法的具体实现吗&#xff1f;你知道HashTable、ConcurrentHashMap中hash方法的实现以及原因吗&#xff1f;你知道为什么要这么实现吗&#xff1f;你知道为什么JDK 7和JDK 8中hash方法实现的不同以及区别吗&#xff1f;如果你不能很好的回答这些问题&#x…

电子学会青少年编程等级考试Python一级题目解析03

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 Python一级题目解析 1、题目[2021.06] 绘制如下图形&#xff0c;相关参数及要…

Python 函数知识汇总

1. 函数的理解和定义 ① 是什么 函数是一段具有特定功能、可重用的语句组&#xff0c;是一种功能的抽象。 ② 作用 降低编程难度和代码复用 ③ 怎么用 def <函数名>(<参数(0个或多个)>): <函数体> return <返回值> 说明&#xff1a; -函数定义时&…

Android四大基本组件介绍与生命周期

Android四大基本组件分别是Activity&#xff0c;Service服务,Content Provider内容提供者&#xff0c;BroadcastReceiver广播接收器。 一:了解四大基本组件 Activity : 应用程序中&#xff0c;一个Activity通常就是一个单独的屏幕&#xff0c;它上面可以显示一些控件也可以监听…

【快速入门系列】简述 for...in 和 for...of 区别

引言 在对数组或对象进行遍历时&#xff0c;我们经常会使用到两种方法&#xff1a;for...in 和 for...of&#xff0c;那么这两种方法之间的区别是什么呢&#xff1f;让我们来研究研究。 一、for...in 首先我们看下MDN对for...in方法的解释&#xff1a;for...in | MDN for...in …

【新周报(050)】Datawhale组队学习

记录&#xff1a; 按照Datawhale第33期组队学习的规划&#xff0c;六门课程 《吃瓜教程——西瓜书南瓜书》、《动手学数据分析》、《李宏毅机器学习&#xff08;含深度学习&#xff09;》、《数据可视化&#xff08;Matplotlib&#xff09;》、《LeetCode刷题》、《Scratch&am…

PyInstaller库的使用

1.简介 是第三方库&#xff0c;需要额外安装 使用其可以让Python以可执行文件而非源码形式运行 2.安装方式 在命令行输入 pip install pyinstaller 3.使用方式 在命令行输入 pyinstaller -F <文件名.py> 看到多出三个文件夹&#xff0c;其中_pycache_和build可以安全…

myeclipse 遇到的一些问题及解决方案

1.、提示键配置一般默认情况下&#xff0c;Eclipse &#xff0c;MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的&#xff0c;主要是Eclipse &#xff0c;MyEclipse本身有很多选项是默认关闭的&#xff0c;要开发者自己去手动配置。如果开发者不清楚的话&#…

电子学会青少年编程等级考试案例:曲奇饼干

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 案例&#xff1a;曲奇饼干 代码 import turtlet turtle.Pen()t.speed(6) t.p…