您当前的位置:首页 > 电脑百科 > 程序开发 > 前端

前端开发常用的ES6语法,建议收藏!

时间:2023-03-16 13:39:20  来源:掘金  作者:

1. 啥是 ES6?


 

在学习 ES6 之前,我们先了解一下啥是 ES。

ES 全称 ECMAScript,它是由欧洲计算机协会(ECMA)制定的一种脚本语言的标准化规范。

这家伙说白了就是给 JAVAScript 制定的一种语法规范,你写 js 的时候如果按照 ES6 中的规范去写,写的代码不仅简洁而且效率很高。

ES6 发行于 2015 年 6 月,由于这个版本的语法规范极大地提高了前端开发人员的效率,所以在前端圈子中流行开来,时至今日热度依旧不减。

2. let 和 const2.1 let

let 是 ES6 中新增加的用于声明变量的关键字,它具有如下特点:

 

  1. 不存在变量提升

 

不能先使用再声明

num = 20; let num = 30; console.log(num); 复制代码


 

 

  1. 只在块级作用域有效

 

例一:


{ let num = 30; } console.log(num); 复制代码


 

例二:

var num = 20; { let num = 30; } console.log(num); 复制代码


 

从上面的例子中我们可以看到,let 定义的变量只能在所在的 { } 中使用,不受外界干扰,也不会干扰外界。

2.2 const

const 也是 ES6 中新增加的用于声明变量的关键字,它主要用来声明常量。它具有如下特点:

 

  1. 声明常量时必须赋值
const name; console.log(name); 复制代码

 


 

 

  1. 只在块级作用域有效
var message = '今天基金跌惨了。。呜呜呜'; { const messge='把钱还给我,不玩了。。。呜呜呜'; } console.log(message); 复制代码

 


 

从上面的例子中我们可以看到,const 定义的变量只能在所在的 { } 中使用,不受外界干扰,也不会干扰外界。

 

  1. 赋值后,值不能修改

 

例一:

const message = '今天基金跌惨了。。呜呜呜'; message='今天我赚翻了。。。哈哈哈'; console.log(message); 复制代码


 

例二:

const user = { id: 123, name: "张三" }; user ={id:234,name:"李四"} console.log(user); 复制代码


 

const user = { id: 123, name: "张三" }; user.name="李四"; console.log(user); 复制代码


 

 

从上面的例子中我们可以看出 const 赋值的常量如果是基本数据类型,不能重新赋值;如果是对象等复杂数据类型,不能更改地址,但是可以更改对象中属性的值。
2.3 var、let、const 的区别
  1. var 声明的变量作用域在所处的函数内,let 和 const 声明的变量作用域在所处的大括号内。
  2. var 声明的变量存在变量提升现象,let 和 const 声明的变量不存在变量提升现象。
  3. const 声明变量时必须要赋值,赋值之后不能再重新赋值。
3. 箭头函数
  • ( ) 代表函数
  • { } 代表函数体
  • const ft = ()=>{} 代表把一个函数赋值给 ft
  • ft() 调用该函数
  1. 无参数,函数体只有一行代码
// 常规写法 function print() { console.log("呜呜呜,今天打王者荣耀 target=_blank class=infotextkey>王者荣耀连着输了6把!"); } // 箭头函数 const ft = ()=> console.log("呜呜呜,今天打王者荣耀连着输了6把!"); // 调用函数 ft(); 复制代码

 


 

 

  1. 有参数,函数体只有一行代码
// 常规写法 function print(name,content) { return name + content; } // 箭头函数 const ft = (name,content) => name + content; // 调用函数 console.log(ft("鲁迅","家门前有2棵树")); 复制代码

 


 

 

  1. 只有一个参数,可以去掉大括号
// 常规写法 function print(name) { return name + "我爱你"; } // 箭头函数 const ft = name => name + "我爱你"; // 调用函数 console.log(ft("祖国妈妈")); 复制代码

 


 

4.多个参数,函数体有多行

// 箭头函数:获取年龄最大值 const ft = (userArray, sex) => { let ageArray = userArray.filter(user => user.sex == sex).map(item => item.age); return Math.max(...ageArray); } let userArray = [{ name: '张三', sex: '男', age: 18 }, { name: '李四', sex: '女', age: 19 }, { name: '王五', sex: '男', age: 21 }] // 调用函数 console.log(ft(userArray, '男')); 复制代码


 

4. 解构

解构就是把数据结构进行分解,然后为定义的变量赋值。

4.1 数组解构

获取数组中数值的传统方式:

const num =[0,1,2,3]; const a= num[0]; const b= num[1] console.log(a+b); 复制代码

解构:

let [a, b] = [0, 1, 2, 3]; console.log(a + b); 复制代码4.2 对象解构

获取对象中数据的传统方式:

let user = {name:"张三",age:19}; let name = user.name; let age = user.age; console.log("姓名:"+name+",年龄:"+age); 复制代码

解构:

let { name, age } = { name: "张三", age: 19 }; console.log("姓名:" + name + ",年龄:" + age); 复制代码


 

5. 剩余参数

剩余参数允许我们将一个未知数量的参数表示为一个数组。

5.1 使用

语法:...参数名

例如:

const print = (num, ...args) => { console.log(num); console.log(args); } print(0, 1, 2) 复制代码


 

从上面的例子中我们发现参数 args 是一个数组。

5.2 和解构连用let users = ['张三', '李四', '王五']; let [u1, ...u2] = users; console.log(u1); console.log(u2); 复制代码


 

5.3 合并数组let u1 = ['张三', '李四', '王五']; let u2 = ['张无忌', '赵敏', '周芷若']; let u3 = [...u1,...u2]; console.log(u3); 复制代码


 

6. 可选链

可选链 ?. 是一种 访问嵌套对象属性的防错误方法 。即使中间的属性不存在,也不会出现错误。 如果可选链 ?. 前面部分是 undefined 或者 null,它会停止运算并返回 undefined。

 

我们要想获取一个嵌套对象的属性,一般会这样写:

let res = { data: { data: { success: true, id: "20220425" } } } if (res && res.data && res.data.data.success) { let id = res.data.data.id; console.log(id); } 复制代码

使用可选链

let res = { data: { data: { success: true, id: "20220425" } } } if (res?.data?.data?.success) { let id = res?.data?.data?.id; console.log(id); } 复制代码


 

7. Set

Set 是 ES6 提供的一种数据结构,它和数组很像,但是它里面的数据是不可重复的。

 

  1. 初始化
const set1 = new Set([1, 2, 3, 4, 5, 5]); const set2 = new Set(['苹果','橘子','橘子']); console.log(set1); console.log(set2); 复制代码

 


 

 

  1. 添加数据
const set1 = new Set([1, 2, 3, 4, 5,5]); set1.add(7); 复制代码
  1. 删除数据
const set1 = new Set([1, 2, 3, 4, 5,5]); set1.delete(3); 复制代码
  1. 包含数据
const set1 = new Set([1, 2, 3, 4, 5,5]); const res = set1.has(1); console.log(res); 复制代码

 


 

 

  1. 清除所有数据
const set1 = new Set([1, 2, 3, 4, 5,5]); set1.clear(); 复制代码8. 数组操作8.1 合并数组let u1 = ['张三', '李四', '王五']; let u2 = ['张无忌', '赵敏', '周芷若']; let u3 = [...u1,...u2]; console.log(u3); 复制代码

 


 

8.2 includes()

includes 用来判断该数组是否包含某个值,返回值是布尔值

let users = ['张三','李四']; let res =users.includes('张三'); console.log(res); 复制代码


 

8.3 find()

find 用来找到第一个符合条件的成员,没有找到返回 undefined

let users = [{ name: '张三', age: 18 }, { name: '李四', age: 20 }]; let user = users.find((item, index) => item.age > 18 ) console.log(user); 复制代码


 

8.4 findIndex()

findIndex 用来找到第一个符合条件的成员的索引,没有的话返回 -1

let users = [{ name: '张三', age: 18 }, { name: '李四', age: 20 }]; let index = users.findIndex((item, index) => item.age > 18 ) console.log(index) 复制代码


 

8.5 filter()

filter 用来返回一个满足条件的新数组,不满足条件返回空数组

let users = [{ name: '张三', age: 18 }, { name: '李四', age: 20 }]; let array = users.filter((item, index) => item.age > 21 ) console.log(array); 复制代码


 

8.6 map()

map 用来返回一个对成员进行加工之后的新数组

let users = [{ name: '张三', age: 18 }, { name: '李四', age: 20 }]; let array = users.map((item, index) => { item.name += "666"; item.age += 10; return item; }) console.log(array); 复制代码


 

9. 字符串扩展方法9.1 startsWith() 和 endsWith()

startsWith()

表示该字符串参数是否在某个字符串头部

let message = "helloworld"; let res = message.startsWith("hello"); console.log(res); 复制代码


 

endsWith()

表示该字符串参数是否在某个字符串尾部

let message = "helloworld"; let res = message.endsWith("ww"); console.log(res); 复制代码


 

9.2 模板字符串

模板字符串是 ES6 新增加的创建字符串的方式

定义方式:反引号

 

  1. 定义
let country = `中国`; 复制代码
  1. 解析变量
let country = `中国`; let message = `我爱你${country}`; console.log(message); 复制代码

 

 

  1. 调用函数
const print = message=>message+",2022-04-25"; let message = `${print('我爱你中国')}`; console.log(message); 复制代码

 


 



Tags:前端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
20k级别前端是怎么使用LocalStorage的,想知道吗?
当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。前言大家好,我是林...【详细内容】
2024-03-26  Search: 前端  点击:(12)  评论:(0)  加入收藏
前端不存在了?盲测64%的人更喜欢GPT-4V的设计,杨笛一等团队新作
3 月 9 日央视的一档节目上,百度创始人、董事长兼 CEO 李彦宏指出,以后不会存在「程序员」这种职业了,因为只要会说话,人人都会具备程序员的能力。「未来的编程语言只会剩下两种...【详细内容】
2024-03-11  Search: 前端  点击:(9)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown —— 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  Search: 前端  点击:(11)  评论:(0)  加入收藏
两年前端经验还不会手写Promise?
什么是promise?当我们处理异步操作时,我们经常需要进行一系列的操作,如请求数据、处理数据、渲染UI等。在过去,这些操作通常通过回调函数来处理,但是回调函数嵌套过多会导致代码...【详细内容】
2024-03-07  Search: 前端  点击:(23)  评论:(0)  加入收藏
十个前端冷门但好用的前端工具函数库
本文推荐十个冷门但好用的前端工具函数仓库,它们可能没有很高的知名度,但却能为你解决实际问题,提高开发效率。在前端开发中,有时候我们会遇到一些常见的功能需求,但却不知道从哪...【详细内容】
2024-02-27  Search: 前端  点击:(21)  评论:(0)  加入收藏
前端开发:Visual Studio Code和Visual studio如何选?
Visual Studio Code和Visual studio都是微软的集成开发环境(IDE),那么在实际工作中该如何选择呢。贝格前端工场对二者做一番对比,帮助您决策一下。一、Visual Studio Code的介绍...【详细内容】
2024-02-27  Search: 前端  点击:(46)  评论:(0)  加入收藏
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  Search: 前端  点击:(32)  评论:(0)  加入收藏
一段微信小程序前端与后端连接的代码,带注解
微信小程序的前端和后端连接通常涉及到使用微信小程序提供的网络请求API与后端服务器进行通信。以下是一个简单的示例,展示如何使用微信小程序的前端代码向后端发送请求并处...【详细内容】
2024-01-24  Search: 前端  点击:(55)  评论:(0)  加入收藏
如何优雅的实现前端国际化?
JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库!i18nexti18ne...【详细内容】
2024-01-17  Search: 前端  点击:(69)  评论:(0)  加入收藏
JavaScript前端框架2024年展望
Angular、Next.js、React和Solid的维护者和创作者们展望2024年,分享了他们计划中的改进。译自2024 Predictions by JavaScript Frontend Framework Maintainers,作者 Loraine...【详细内容】
2024-01-05  Search: 前端  点击:(91)  评论:(0)  加入收藏
▌简易百科推荐
20k级别前端是怎么使用LocalStorage的,想知道吗?
当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。前言大家好,我是林...【详细内容】
2024-03-26  前端之神  微信公众号  Tags:前端   点击:(12)  评论:(0)  加入收藏
前端不存在了?盲测64%的人更喜欢GPT-4V的设计,杨笛一等团队新作
3 月 9 日央视的一档节目上,百度创始人、董事长兼 CEO 李彦宏指出,以后不会存在「程序员」这种职业了,因为只要会说话,人人都会具备程序员的能力。「未来的编程语言只会剩下两种...【详细内容】
2024-03-11  机器之心Pro    Tags:前端   点击:(9)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown —— 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  OSC开源社区    Tags:Vue   点击:(11)  评论:(0)  加入收藏
两年前端经验还不会手写Promise?
什么是promise?当我们处理异步操作时,我们经常需要进行一系列的操作,如请求数据、处理数据、渲染UI等。在过去,这些操作通常通过回调函数来处理,但是回调函数嵌套过多会导致代码...【详细内容】
2024-03-07  海燕技术栈  微信公众号  Tags:Promise   点击:(23)  评论:(0)  加入收藏
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  CarryData    Tags:前端   点击:(32)  评论:(0)  加入收藏
网站程序开发中的前后端分离技术
随着互联网的快速发展和技术的不断创新,传统的网站开发模式已经难以满足日益增长的业务需求。为了提高开发效率、增强系统的可维护性和可扩展性,前后端分离技术逐渐成为了网站...【详细内容】
2024-01-31  网站建设派迪星航    Tags:前后端分离   点击:(23)  评论:(0)  加入收藏
如何优雅的实现前端国际化?
JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库!i18nexti18ne...【详细内容】
2024-01-17  前端充电宝  微信公众号  Tags:前端   点击:(69)  评论:(0)  加入收藏
Vue中Scope是怎么做样式隔离的?
scope样式隔离在 Vue 中,样式隔离是通过 scoped 特性实现的。当在一个组件的 <style> 标签上添加 scoped 特性时,Vue 会自动为这个样式块中的所有选择器添加一个唯一的属性,以...【详细内容】
2024-01-04  海燕技术栈  微信公众号  Tags:Vue   点击:(80)  评论:(0)  加入收藏
vue3中 ref和 reactive的区别 ?
最近有朋友在面试过程中经常被问到这么一个问题,vue3 中的ref 和 reactive的区别在哪里,为什么 要定义两个API 一个 api不能实现 响应式更新吗??带着这个疑问 ,我们 接下来进行逐...【详细内容】
2024-01-03  互联网高级架构师  今日头条  Tags:vue3   点击:(38)  评论:(0)  加入收藏
React18 与 Vue3 全方面对比
1. 编程风格 & 视图风格1.1 编程风格 React 语法少、难度大;Vue 语法多,难度小例如指令:Vue<input v-model="username"/><ul> <li v-for="(item,index) in list" :key="inde...【详细内容】
2024-01-03  爱做梦的程序员  今日头条  Tags:Vue3   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条