一文详解如何在项目中和平时练习中应用es6语法

 更新时间:2022年11月10日 12:08:38   作者:Cirrod  
ES6是JavaScript的一个版本,因为我们前面用到的vue默认使用ES6语法开发,所以我们在这一节补充ES6的知识点,下面这篇文章主要给大家介绍了关于如何在项目中和平时练习中应用es6语法的相关资料,需要的朋友可以参考下

一、关于取值

const obj = {
    a:1,
    b:2,
    c:3,
    d:4,
    e:5,
}
 
const a = obj.a;
const b = obj.b;
const c = obj.c;
const d = obj.d;
const e = obj.e;

es6解构赋值:

const {a,b,c,d,e} = obj;

也可以使用:进行重命名

const {a:a1} = obj;
console.log(a1)

二、数组和对象的合并

const a = [1,2,3];
const b = [1,5,6];
const c = a.concat(b);//[1,2,3,1,5,6]
 
const obj1 = {
  a:1,
}
const obj2 = {
  b:1,
}
const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}

es6的扩展运算符,数组的合去重

const a = [1,2,3];
const b = [1,5,6];
const c = [...new Set([...a,...b])];//[1,2,3,5,6]
 
const obj1 = {
  a:1,
}
const obj2 = {
  b:1,
}
const obj = {...obj1,...obj2};//{a:1,b:1}

三、字符串拼接

const name = '小明';
const score = 59;
let result = '';
if(score > 60){
  result = `${name}的考试成绩及格`; 
}else{
  result = `${name}的考试成绩不及格`; 
}

es6模板字符串

${}中可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。

const name = '小明';
const score = 59;
const result = `${name}${score > 60?'的考试成绩及格':'的考试成绩不及格'}`;

四、if条件多

if(
    type == 1 ||
    type == 2 ||
    type == 3 ||
    type == 4 ||
){
   //...
}

es6数组方法includes

const condition = [1,2,3,4];
 
if( condition.includes(type) ){
   //...
}

五、精确搜索

const a = [1,2,3,4,5];
const result = a.filter( 
  item =>{
    return item === 3
  }
)

es6数组find方法,性能优化,find方法中找到符合条件的项,就不会继续遍历数组。

const a = [1,2,3,4,5];
const result = a.find( 
  item =>{
    return item === 3
  }
)

六、获取对象属性值

const name = obj && obj.name;

es6可选链?

const name = obj?.name;

可选链?补充:

会在尝试访问obj.name之前确定obj既不是null也不是undefined,如果obj是null或者undefined表达式会进行短路计算直接返回undefined

七、输入框非空判断

if(value !== null && value !== undefined && value !== ''){
    //...
}

es6空位合并运算符??

if((value??'') !== ''){
  //...
}

es6空位合并运算符??补充:

前值是null或者undefined时表达式返回后值

const a = 0 ?? '默认值a';
cosnt b = null ?? '默认值b';
 
console.log(a); // "0"  0是假值,但不是 null 或者 undefined
console.log(b); // "默认值b"

拓展:

变量赋默认值一般使用逻辑或操作符 || 。但是由于 || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(0, '', NaN, null, undefined)都不会被返回。这导致如果你使用0''NaN作为有效值,就会出现不可预料的后果。这也是 ?? 操作符可以解决这个问题

const a = 0;
const b = a || 5
 
 
//当0作为有效值,与我们期望的 b 的值不一致
console.log(b); // 5

八、异步函数回调

const fn1 = () =>{
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(1);
    }, 300);
  });
}
const fn2 = () =>{
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(2);
    }, 600);
  });
}
const fn = () =>{
   fn1().then(res1 =>{
      console.log(res1);// 1
      fn2().then(res2 =>{
        console.log(res2)
      })
   })
}

es6的async和await

const fn = async () =>{
  const res1 = await fn1();
  const res2 = await fn2();
  console.log(res1);// 1
  console.log(res2);// 2
}

九、函数默认参数

function fn (name, age) {
  let name = name || 'hsq'
  let age = age || 22
  console.log(name, age)
}
fn() // hsq 22

es6函数默认参数

function fn (name = 'hsq', age = 22) {
  console.log(name, age)
}
fn() // hsq 22
fn('test', 23) // test 23

十、剩余参数

一个函数,传入参数的个数是不确定的,这就可以用ES6的剩余参数

function fn (name, ...params) {
  console.log(name)
  console.log(params)
}
fn ('hsq', 1, 2) // hsq [ 1, 2 ]
fn ('hsq', 1, 2, 3, 4, 5) // hsq [ 1, 2, 3, 4, 5 ]

十 一、箭头函数

普通函数

function fn () {}
 
const fn = function () {}

es6箭头函数

const fn = () => {}
 
// 如果只有一个参数,可以省略括号
const fn = name => {}
 
// 如果函数体里只有一句return
const fn = name => {
    return 2 * name
}
// 可简写为
const fn = name => 2 * name
 
// 如果返回的是对象
const fn = name => ({ name: name })
 

普通函数和箭头函数的区别: 

  • 1、箭头函数不可作为构造函数,不能使用new
  • 2、箭头函数没有原型对象
  • 3、箭头函数没有自己的this
  • 4、箭头函数没有arguments对象

十二、获取对象的键值

Object.keys

可以用来获取对象的key的集合

const obj = {
  name: 'hsq',
  age: 22,
  gender: '男'
}
 
const values = Object.keys(obj)
console.log(values) // [ 'hsq', 22, '男' ]

Object.values

可以用来获取对象的value的集合

const obj = {
  name: 'hsq',
  age: 22,
  gender: '男'
}
 
const values = Object.values(obj)
console.log(values) // [ 'hsq', 22, '男' ]

Object.entries

可以用来获取对象的键值对集合

const obj = {
  name: 'hsq',
  age: 22,
  gender: '男'
}
 
const entries = Object.entries(obj)
console.log(entries) 
// [ [ 'name', 'hsq' ], [ 'age', 22 ], [ 'gender', '男' ] ]

十三、数组扁平化

Array.flat

有一个二维数组,我想让他变成一维数组:

const arr = [1, 2, 3, [4, 5, 6]]
 
console.log(arr.flat()) // [ 1, 2, 3, 4, 5, 6 ]

还可以传参数,参数为降维的次数

const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9]]]
 
console.log(arr.flat(2))
[
  1, 2, 3, 4, 5,
  6, 7, 8, 9
]

如果传的是一个无限大的数字,那么就实现了多维数组(无论几维)降为一维数组

const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]]
 
console.log(arr.flat(Infinity))
[
   1,  2, 3, 4,  5,
   6,  7, 8, 9, 10,
   11, 12
]
 

总结

到此这篇关于如何在项目中和平时练习中应用es6语法的文章就介绍到这了,更多相关项目应用es6语法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • webpack图片转为base64的实现示例

    webpack图片转为base64的实现示例

    在开发过程中,图片转成base64是常有的事,本文主要介绍了webpack图片转为base64的实现示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • JavaScript动态检测密码强度原理及实现方法详解

    JavaScript动态检测密码强度原理及实现方法详解

    这篇文章主要介绍了JavaScript动态检测密码强度原理及实现方法,结合具体实例形式详细分析了javascript针对输入字符串密码强度检测的原理与相关判断操作技巧,需要的朋友可以参考下
    2019-06-06
  • JavaScript File API实现文件上传预览

    JavaScript File API实现文件上传预览

    这篇文章主要为大家介绍了JavaScript File API实现文件上传预览,File API将极大地方便 Web 端的文件上传等操作,本文将介绍 File API的概况,并用两个实例展示File API的应用,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 使用flutter创建可移动的stack小部件功能

    使用flutter创建可移动的stack小部件功能

    本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完成可拖动功能,需要的朋友可以参考下
    2021-10-10
  • html+js实现简单的计算器代码(加减乘除)

    html+js实现简单的计算器代码(加减乘除)

    下面小编就为大家带来一篇html+js实现简单的计算器代码(加减乘除)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 你所不了解的javascript操作DOM的细节知识点(一)

    你所不了解的javascript操作DOM的细节知识点(一)

    这篇文章主要介绍了你所不了解的javascript操作DOM的细节知识点的相关资料,需要的朋友可以参考下
    2015-06-06
  • 原生JS实现小小的音乐播放器

    原生JS实现小小的音乐播放器

    这篇文章主要为大家详细介绍了原生JS实现音乐播放器,支持循环、随机播放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案

    ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案

    这篇文章主要介绍了ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案,在文章中用到了angularjs的指令知识点,对ionic隐藏底部导航栏知识感兴趣的朋友一起学习吧
    2016-11-11
  • 如何基于uni-app实现微信小程序一键登录与退出登录功能

    如何基于uni-app实现微信小程序一键登录与退出登录功能

    uni-app 是使用vue的语法+小程序的标签和API的一套框架,是一套代码多端使用,目前是大前端的一种趋势,下面这篇文章主要给大家介绍了关于如何基于uni-app实现微信小程序一键登录与退出登录功能的相关资料,需要的朋友可以参考下
    2022-09-09
  • JS倒计时两种实现方式代码实例

    JS倒计时两种实现方式代码实例

    这篇文章主要介绍了JS倒计时两种实现方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论