【前端JS】ES6的几种新特性
admin
2024-02-08 16:34:56
0

前端项目技术栈: js语言 || es6、7、8等新特性 || 框架 JQuery 、Vue、 React || 工具 Webstorm 、vscode || 项目构建 webpack || 依赖管理 npm

ES6

是 JavaScript 语言的下一代标准,每一年都会发布一个新版本。意思就是 ES 是浏览器脚本语言的规范,JavaScript 是具体实现,其具有如下几个特性:

  1. let
  • let 不会逾域,var 会逾域
  • let 不能多次声明,var 可以多次声明
  • let 不存在变量提升,var 存在变量提升
        {var a = 1;let b = 2;}console.log(a);console.log(b);

扩展: const —— 用于声明常量,不能改变

  1. 解构表达式
       // 1. 数组解构let arr = [1, 2, 3];// 寻常写法// let a = arr[0];// let b = arr[1];// let c = arr[2];// 使用解构表达式的写法let [a, b, c] = arr;console.log(a, b, c);// 2. 对象解构const person = {name : "waniqng",age : 20,language : ["java", "js", "vue"]}// 寻常写法// const name = person.name;// const age = person.age;// const language = person.language;// 使用解构表达式的写法const {name, age, language} = person;console.log(name, age, language);// 对象解构用法二: 将 name 改名为 abc// const {name : abc, age, language} = person;  
  1. 对字符串的扩展
        // 字符串 API 的扩展let str = "hello, wanqing";let age = 20;console.log(str.startsWith("hello"));console.log(str.endsWith("qing"));console.log(str.includes("wanqing"));console.log(str.includes("hello"));// 字符串模板let ss = `
`console.log(ss);// 字符串插值let info = `我是${str}, 我要加油!`;console.log(info)// 字符串中插入表达式let info2 = `我是${str}, 我${age + 1}岁了!`;// 字符串中插入方法let info3 = `我是方法返回值, ${fun()}`;console.log(info2)function fun(){return "我是一个函数";}console.log(info3)
  1. 函数优化
            // ES6 之前写法 —— 若 b 为null, 则默认值为 1function add(a,b){b = b | 1;return a + b;}console.log(add(10));// 1. ES6 之后,自己赋值一个默认值function add2(a, b=1) {return a + b;}console.log(add2(20));// 2. 不定参数function fun(...values){console.log(values.length)}fun(1, 2);fun(1, 2, 3);// 3. 箭头函数var print = obj => console.log(obj);print("hello")var addAB = (a, b) => a + b;console.log(addAB(1, 2))var sum3 = (a, b) => {c = a + b;return a + c;}console.log(sum3(10, 20));const person = {name: "wangqing",love: "java"}function hello(person) {console.log("hello" + person.name)console.log(person.name + "like" + person.love)}hello(person);var hello2 = ({name, love}) => {console.log("hello" + name)console.log(name + "like" + love)}hello2(person);
  1. 对象优化
            const person = {name: "wangqing",love: "java"}// 获取当前对象中所有属性Object.keys(person)// 获取当前对象所有属性的值Object.values(person)// 获取当前对象所有键值对 Object.entries(person)// assign 用于对象的合并const target = {a : 1};const source1 = {b : 2};const source2 = {c : 3};Object.assign(target, source1, source2);console.log(target);// 声明对象的简写方式const age = 20;const name = "wangqing"const person2 = { age, name}console.log(person2)// 对象函数的简写let person3 = {name : "wanqing",like: function(love){console.log( this.name + " love" + love );},// 注意,箭头函数 this 不能获取到,要使用对象名.属性名like2: love => {console.log( this.name + " love" + love );} ,// 简写写法 3like3(love){console.log( this.name + " love" + love );}}person3.like("打代码");person3.like2("打代码")person3.like3("打代码")// 对象的扩展运算符// 1. 拷贝对象 深拷贝let p1 = {name: "wanqing" , age : 20}let someone = {...p1} // 将 p1 中的内容拷贝给 someoneconsole.log(someone)// 2. 合并对象let age1 = {age : 20};let name2 = {name: "wanqing"}let p2 = {...age1, ...name2}console.log(p2); // 若是 p2 中之前已经含有 age 和 name 的值,使用新值覆盖原来的值
  1. map - reduce 方法
        // ES6 为数组中新增了 map 和 reduce 方法// map —— 接收一个函数,将数组中所有值用这个函数处理后返回let arr = [1, 20, 30];// arr = arr.map((item) => {//     return item*2;// })// 更简洁的写法arr = arr.map(item => item*2)console.log(arr)// reduce —— 为数组中每一个元素执行回调函数// 传入一个回调函数,我们这里里传入一个箭头函数为例子// 回调函数其参数为: 上一次处理后的值(调用回调函数返回的值), 当前正常处理的值, 当前函数在数组中的索引, 调用 reduce 的数组let res = arr.reduce((a, b)=>{console.log("上一次处理后变为" + a);console.log("当前正在处理" + b)return a + b;}, 100) // 可以指定初始值console.log(res)
  1. promise
        console.log("合理处理嵌套请求")// 查出当前用户信息// 根据 id 查询当前用户的课程// 更加课程 id 得到当前用户的成绩$.ajax({url : "mock/user.json",success: function(data) {console.log(data)// 查询课程// 查询课程成功,查询成绩// —— 嵌套查询非常凌乱 ~~},error: function(error){console.log("失败")}})// promise 可以封装异步操作let p = new Promise((resovle, reject)=>{console.log("进入")// 异步操作$.ajax({url : "mock/user.json",success: function(data) {console.log("查询用户成功", data)resovle(data)},error: function(error){reject(error)console.log("失败")}})});// promise 操作成功p.then((obj) => {return new Promise((resovle, reject)=>{$.ajax({url : `mock/user_course_${obj.id}.json`,success: function(data) {console.log("查询用户课程成功", data)resovle(data)},error: function(error){reject(error)}})});}).catch((error)=>{}).then((data)=>{console.log("上一步的结果" + data);$.ajax({url : `mock/user_score_${obj.id}.json`,success: function(data) {console.log("查询用户课程成绩成功", data)resovle(data)},error: function(error){reject(error)}})})
  1. 模块化
    模块化就是将代码进行拆分,可以随意导入和导出需要用的代码。
  • 需要导出给其他模块用的代码
const util =  {sum(a, b) {return a + b;}
}// export 可以导出一切类型
export {util}// 写法二
export const util2 =  {sum(a, b) {return a + b;}
}// 使得导入时可以随意起名字
export default {sum(a, b) {return a + b;}
}
var name = "waniqng"
var love = "js"export{name, love}
  • 需要导入其他模块的代码
import util from "./hello.js"
import {name, love} from "./user.js"util.sum(1, 2);
console.log(name);
console.log(love)

尾注:所有的不自信,所有的痛苦,所有的失望,都是因为技术不够强,我热爱我所学的,不后悔走上这条路,我也一定会坚持走下去,与君共勉

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...