JavaScript全解析——ES6函数中参数的默认值和解构赋值

news2024/9/30 19:34:11

在这里插入图片描述

本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS!

文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容,主页关注一波!

ES6函数中参数的默认值

给函数的形参设置一个默认值, 当你没有传递实参的时候, 使用默认值

直接使用 赋值符号(=) 给形参赋值即可

function fn(a, b = 100) { 
   console.log(a, b)
 } 
 
 fn() 
 fn(10) 
 fn(10, 20)

ES6的函数默认值

在ES5之前是没有函数默认值的。函数的默认值是ES6的新语法

函数的默认值是给函数的形参设置一个默认值, 当你没有传递实参的时候来使用

书写: 直接在书写形参的时候, 以赋值符号(=) 给形参设置默认值就可以了

任何函数都可以使用

注意: 如果你给箭头函数设置参数默认值, 那么不管多少个形参, 都得写小括号

普通函数

<script>
    // 给形参 a 设置了默认值为 10
    // 给形参 b 设置了默认值为 20
    function fn(a = 10, b = 20) {
        console.log('fn 普通函数内的打印')
        console.log('a : ', a)
        console.log('b : ', b)
    }
    // // 第一次调用
    // // 给 两个形参 赋值了, 那么就不使用默认值了
    fn(100, 200)
    // // 第二次调用
    // // 没有给 b 赋值, 那么 b 就会使用 20 这个默认值
    fn(1000)
    // // 第三次调用
    // // a 和 b 都没有实参进行赋值, 都会使用 默认值
    fn()
</script>
<script>
    //给a设置了默认值,b 没有设置默认值
    function fn(a = 10, b) {
        console.log('fn 普通函数内的打印')
        console.log('a : ', a)
        console.log('b : ', b)
    }
    //调用函数都不传递实参
    fn()
</script>

箭头函数

<script>
    // 箭头函数也可以设置默认值
    // 给形参 a 设置了默认值为 10
    // 给形参 b 设置了默认值为 20
    const fn = (a = 10, b = 20) => {
        console.log('fn 箭头函数内的打印')
        console.log('a : ', a)
        console.log('b : ', b)
        console.log('---------------------')
    }
    // // 第一次调用
    // // 给 两个形参 赋值了, 那么就不使用默认值了
    fn(100, 200)
    // // 第二次调用
    // // 没有给 b 赋值, 那么 b 就会使用 20 这个默认值
    fn(1000)
    // // 第三次调用
    // // a 和 b 都没有实参进行赋值, 都会使用 默认值
    fn()
</script>

随机数案例

<script>
    // 范围内的随机数
    // 定义函数, 两个数字分别默认值设置成 0 和 255
    const randomNum = (a = 255, b = 0) => Math.floor(Math.random() * (Math.abs(a - b) + 1)) + Math.min(a, b)
    console.log(randomNum(20, 30))
</script>

ES6解构赋值

ES6允许按照一定的模式,从数组或对象中提取值,给变量进行赋值,称为解构赋值。

解构赋值分为数组解构对象解构

数组解构

快速的从数组拿到数组中的数据

语法:var [变量1,变量2, 变量3,....] = 数组

会按照数组的索引依次把数组中的数据拿出来,赋值给对应的变量

<script>
    //定义一个数组
    const arr = [100, 200, 300, 400, 500]
        //需求: 单独定义五个变量获取五个数据
    const a = arr[0]
    const b = arr[1]
    const c = arr[2]
    const d = arr[3]
    const e = arr[4]
    console.log(a, b, c, d, e); //100 200 300 400 500
</script>
<script>
    // 解构数组
    const arr = [100, 200, 300, 400, 500]
    //需求: 单独定义五个变量获取五个数据
    const [a, b, c, d, e] = arr
    console.log(a, b, c, d, e) // 100 200 300 400 500
</script>

解构多维数组

数组怎么写, 解构怎么写,把数据换成变量

<script>
    // 1-2. 解构多维数组
    const arr = [1, 2, [3, 4, [5, 6, [7, 8, [9]]]]]
    console.log(arr)
    //需求: 定义变量拿到数据 9
    const a = arr[2][2][2][2][0]
    console.log(a) //9
    //解构
    const [a,b, [c, d, [e, f, [g, h, [i]]]]] = arr
    console.log(i) //9
</script>

对象解构

对象结构就是快速从对象中拿到对象中的数据

语法:var {键名1, 键名2, 键名3, ... } = 对象

按照键名, 依次定义变量从对象中获取指定成员

之前获取对象里面的值

<script>
    // 解构对象
    const obj = {
        name: 'Jack',
        age: 18,
        gender: '男'
    }
    const name = obj.name
    const age = obj.age
    const gender = obj.gender
    console.log(name, age, gender) //Jack 18 男
 </script>

解构获取对象里面的值

<script>
        // 解构对象
        const obj = {
            name: 'Jack',
            age: 18,
            gender: '男'
        }

        // 解构
        const {
            name,
            age,
            gender
        } = obj
        console.log(name, age, gender) //Jack 18 男
</script>

解构的时候可以给变量起一个别名

语法:var { 键名: 别名, 键名2: 别名 } = 对象

注意: 当你起了别名以后, 原先的键名不能在当做变量名使用了, 需要使用这个别名

<script>
    // 解构对象
    const obj = {
        name: 'Jack',
        age: 18,
        gender: '男'
    }
    //  解构的时候起一个别名
    const {
        name: a
    } = obj //等价于 const a = obj.name
    console.log(name, a); //Jake
    //注意name是一个特殊的属性,对象里面自带有改属性所以不会报错
    const {
        age: b
    } = obj //等价一const b = obj.age
    //console.log(age, b); //Uncaught ReferenceError: age is not 
    console.log(b); //18
</script>
<script>
    // 解构对象
    const obj = {
        name: 'Jack',
        age: 18,
        gender: '男'
    }
    const {
        name: a,
        gender,
        age: b
    } = obj
    console.log(a, b, gender) //Jack 18 男
</script>

以上就是我们这篇的全部内容啦!更多技术类干货,戳我主页

视频教程速戳:免费视频教程

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

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

相关文章

AI向百万薪资 高级原画师开刀?!爆Midjourney入局3D模型生成

来源 SoulofArt | ID Soul_Art 现在AI向高级原画师和3D开刀了&#xff1f; 网传爆料AI已入局3D模型生成... 这进化速度放在整个行业都十分炸裂 4月&#xff0c;Midjourney进一步宣布推出Niji-journey V5 这是MJ针对二次元动漫风格预训练好的模型 可在其中添加提示词直接调…

Android 广播使用详解(Broadcast Receivers)

Android 广播接收器(Broadcast Receivers) 广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如&#xff0c;应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备&#xff0c;并可以为他们所用。这样广播接收器可…

Kubernetes配置管理 ConfigMap

Kubernetes配置管理 ConfigMap 一、ConfigMap 1.1 什么是configmap kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理。可以把ConfigMap看作是一个挂载到pod中的存储卷 1.2 创建ConfigMap的4种方式 1.2.1 在命令行指定参数创建 通过直接在命令行中指定config…

新手玩转腾讯云轻量应用服务器搭建网站(保姆级教程)

腾讯云轻量应用服务器镜像选择宝塔Linux面板&#xff0c;然后在宝塔面板上安装LNMP网站所需的Web环境&#xff0c;在宝塔面板上新建站点&#xff0c;上床网站程序安装包到根目录&#xff0c;并安装网站全流程。腾讯云百科来详细说下腾讯云轻量应用服务器搭建网站全流程&#xf…

opencv显示图片

要使用OpenCV在Python中显示图像&#xff0c;您需要遵循以下步骤&#xff1a; 1. 首先&#xff0c;确保已经安装了OpenCV。您可以使用以下命令安装OpenCV&#xff1a; pip install opencv-python 2. 然后&#xff0c;编写一个简单的程序来读取并显示图像。以下是一个示例代码…

数据可视化之雷达图(Radar Chart)

什么是雷达图? 雷达图&#xff08;Radar Chart&#xff09;也称为蜘蛛图、网络图或极坐标图&#xff0c;是一种用于可视化多变量数据的图表。该图表由一系列从中心点向外辐射的辐条组成&#xff0c;每个辐条代表一个不同的变量。数据使用线或区域绘制在每个辐条上&#xff0c…

面试的水太深,年轻人你把握不住.....

前言 去阿里面试测试工程师&#xff0c;这里面水太深&#xff0c;什么未来规划&#xff0c;职业发展的东西都是虚拟的&#xff0c;作者还太年轻&#xff0c;没有那个经历&#xff0c;把握不住。项目只有几个&#xff0c;开心快乐就行&#xff0c;不PK&#xff0c;文明PK。 很…

Partial convolution Gated convolution

组会讨论帖 1. 图像修复 图像修复&#xff08;Image Inpainting&#xff09;&#xff0c;顾名思义&#xff0c;就是将图像中损坏的部分修复起来&#xff0c;是一种图像编辑技术&#xff0c;可以应用在移除物体、修复老照片、图像补全&#xff08;eg,地震插值&#xff09;等等。…

【初始scrapy框架上】——全栈开发——如桃花来

目录索引 scrapy框架的介绍&#xff1a;scrapy第三方包的下载&#xff1a;常见的换源网址&#xff1a; scrapy的图示原理&#xff1a;或者&#xff1a;或者&#xff1a; scrapy原理流程&#xff1a;详细介绍&#xff1a;流程描述&#xff1a;scrapy中的三个内置对象&#xff1a…

open cv 4.6.0 导入maven库以及依赖包 安装教程

windows&#xff1a; 1.官网下载windows安装包 2.安装完成后&#xff0c;复制opencv\build\java\x64\opencv_java451.dll 到 C:\Windows 下 centos&#xff1a; 参考https://www.cnblogs.com/huizhipeng/p/12732019.html 1.先安装cmake3 参考https://www.jianshu.com/p/20…

详谈大模型训练和推理优化技术

详谈大模型训练和推理优化技术 作者&#xff1a;王嘉宁&#xff0c;转载请注明出处&#xff1a;https://wjn1996.blog.csdn.net/article/details/130764843 ChatGPT于2022年12月初发布&#xff0c;震惊轰动了全世界&#xff0c;发布后的这段时间里&#xff0c;一系列国内外的…

莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

在《收获》杂志 65 周年庆典上&#xff0c;莫言在为余华颁奖时表示&#xff0c;余华是自己的好朋友&#xff0c;但给他的颁奖词写了好几天也想不出来&#xff0c;后来找了 ChatGPT 帮忙写。最后&#xff0c;莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词&#xff0c;…

「硬核分享」Docker+jenkinsPipeline 运行实现 python 自动化

一、实现思路 在 Linux 服务器安装 docker 创建 jenkins 容器 jenkins 中创建 pipeline 项目 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 二、环境准…

Defining Timing Constraints and Exceptions(UG945)

在本实验中&#xff0c;将学习为设计创建约束的两种方法。将使用Vivado2019.2 IDE中包含的Kintex-7 CPU网表示例设计。 步骤1&#xff1a;打开示例项目 1.打开Vivado IDE。 Vivado IDE的“Getting Started page”包含打开或创建项目以及查看文档的链接。 2.在“Getting Started…

泛型编程与模板简单介绍,函数模板及其原理与template,typename,模板参数T,函数模板隐式实例化等

泛型编程 比方说现在要去实现一个通用的交换函数&#xff0c;以我们现在的思路&#xff0c;肯定是通过函数重载去解决。但是这样子的话有几个缺点&#xff1a;重载的函数仅仅是类型不同&#xff0c;代码复用率比较低&#xff0c;只要有新类型出现时&#xff0c;就需要用户自己…

水溶性花菁染料Sulfo-CY7 NHS este标记活性脂Cyanine7-NHS

Sulfo-CY7 NHS ester是一种荧光标记试剂&#xff0c;化学结构为C38H42KN3O10S2&#xff0c;分子量约为803.98 。此外&#xff0c;它的分子中还含有一个N-羟基琥珀酰亚胺酯基团&#xff0c;这个基团可以与生物分子中的氨基结合&#xff0c;从而实现荧光标记。Sulfo-CY7 NHS este…

Moonbeam联合Multichain和AWS Startups正式推出Bear Necessities Hackathon黑客松

我们很高兴宣布Bear Necessities Hackathon正式启动。本次黑客松包含7个挑战&#xff0c;超过7万美金的奖池等你来领&#xff01;我们欢迎所有的BUILDers参加&#xff0c;这是开发者们探索Moonbeam并构建跨链用例的机会&#xff01; 本次黑客松由Moonbeam、Multichain和AWS St…

js原生实现pc端日历组件

业务场景 客户要求日期选择使用pc端的样式&#xff0c;前端在x5平台上&#xff0c;也就是需要用原始html、js、css等实现&#xff0c;笔者使用于 原生javascript封装的PC端日历插件&#xff0c;不依赖任何第三方插件&#xff0c;复制的代码文件较长&#xff0c;可跳到 总结 处…

使用whistle对安卓手机进行调试

注意&#xff1a;手机调试的时候需要与电脑连同一个wifi。 1、安装whistle npm install -g whistle2、运行 whistle w2 start3、打开电脑浏览器 输入 http://10.53.40.72:8899/ &#xff0c;点击二维码&#xff0c;可以生成 rootCA.crt 证书&#xff0c;把它发到手机上&…

mysql8查看锁

一。准备环境 1.登录mysql&#xff0c;设置锁等待时间&#xff0c;然后退出。 mysql> set global innodb_lock_wait_timeout1200; Query OK, 0 rows affected (0.00 sec) 2.再次登录MySQL。打开第一个session 3.登录msyql&#xff0c;打开第二个session a&#xff1a;…