ECMAScript6语法:默认参数和rest参数

news2024/9/22 15:48:26

1、默认参数

默认参数即在定义函数的参数列表中指定了默认值的参数。在 ES5 中,并没有提供在参数列表中指定参数默认值的语法,要想为函数的参数指定默认值,只能在函数体中实现,示例代码如下:

function table(width, height, rows, cols){
    width = width || 300;
    height = height || 200;
    rows = rows || 6;
    cols = cols || 3;
}

在 ES6 中,简化了为参数设置默认值的方法,可以直接在参数列表中设置参数的默认值,示例代码如下:

function table(width=300, height=200, rows=6, cols=3){
    //函数体
}

在调用 table() 函数时,如果没有传递实参,则使用4个参数的默认值;如果传递了一个实参,则使用后3个参数的默认值;如果传递了4个实参,则不使用默认值。

2、rest 参数

在 JavaScript 中,无论在定义函数时设置了多少个形参,在调用函数时都可以传入任意数量的实参,在函数内部可以使用 arguments 对象获取传入的实参。

【实例】定义一个获取最大值的函数。

function compare(){
    let maxValue = 0;
    for(let i = 0; i < arguments.length; i++){
        if(arguments[i] > maxValue){
            maxValue = arguments[i];
        }
    }
    return maxValue;
}
document.write(compare(3,7,6,9,2,5)); //输出结果:9

在 ES6 中引入了 rest 参数,在函数的形参前添加3个点,就表示这是一个 rest 参数。例如,将上述代码修改为使用 rest 参数的形式,代码如下:

function compare(...args){
    let maxValue = 0;
    for(let i = 0; i < args.length; i++){
        if(args[i] > maxValue){
            maxValue = args[i];
        }
    }
    return maxValue;
}
document.write(compare(3,7,6,9,2,5)); //输出结果:9

在定义函数时设置的参数列表中,普通参数和 rest 参数可以同时存在。如果既有普通参数也有 rest 参数,那么 rest 参数必须放到参数列表的最后面的位置。

【实例】定义一个获取个人信息的函数,在参数列表中即有普通参数也有 rest 参数,通过调用函数来获取个人信息。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取个人信息</title>
</head>
<body>
</body>
<script type="text/javascript">
    function person(name, sex, ...interest) {
        let info = "";
        info += "姓名:" + name;
        info += "<br>性别:" + sex;
        info += "<br>兴趣爱好:";
        //遍历rest参数
        for (let i = 0; i < interest.length; i++) {
            info += interest[i] + " ";
        }
        return info;//返回个人信息
    }
    document.write(person("Tony", "男", "看书", "运动", "听音乐"));
</script>

</html>

执行结果:

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

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

相关文章

MBR10200FCT-ASEMI智能AI专用MBR10200FCT

编辑&#xff1a;ll MBR10200FCT-ASEMI智能AI专用MBR10200FCT 型号&#xff1a;MBR10200FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;10A 最大循环峰值反向电压&#xff08;VRRM&a…

西安旅游系统--论文pf

TOC springboot383西安旅游系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域的鸿…

YOLOv8侦测任务更换主干网络成MobileNetV3

目录 1. 添加主干网络模块 ​编辑1.1 在init.py中添加模块名 1.2 主体代码中添加调用语句块 2. 配置yaml文件 3. 修改成功 1. 添加主干网络模块 1.1 在init.py中添加模块名 1.2 主体代码中添加调用语句块 2. 配置yaml文件 3. 修改成功 自己随便找一个程序跑一跑验证…

微电网控制器是什么?微电网中央控制器|微电网协调控制器|微电网控制系统图|Micon2505微网中央控制器方案介绍

微电网控制器是什么&#xff1f;微电网中央控制器|微电网协调控制器|微电网控制系统图|Micon2505微网中央控制器方案介绍及其在油田采油机场景中的应用。微电网控制器广泛应用于具备光伏&#xff0c;储能&#xff0c;V2G&#xff0c;充电桩&#xff0c;风电&#xff0c;柴油发电…

图解内存分配算法 -- 小内存分配算法

图解内存分配算法 – 小内存分配算法 文章目录 图解内存分配算法 -- 小内存分配算法1. 算法介绍2. 算法图解2.1 约定2.2 数据结构介绍2.3 初始化2.4 第一次 malloc 40字节2.5 第二次 malloc 18 字节2.6 第三次 malloc 20字节2.7 第四次 malloc 40字节2.8 第一次 free2.9 第二次…

LINUX服务器部署准备

文章目录 配置环境变量NODE下载解压安装 NGINX下载NGINX下载GCC并安装解压安装启动NGINX MAVEN下载解压安装配置环境 TOMCAT下载兼容版本解压安装开启远程访问 REDIS下载解压安装配置远程使用关闭保护模式 配置环境变量 vi /etc/profile source /etc/profile解压成功之后、运行…

安装IDEA2021.2.1(含安装包)及其扩展设置

一、下载 通过百度网盘分享的文件&#xff1a;ideaIU-2021.2.1.exe 链接&#xff1a;https://pan.baidu.com/s/1cCUHNm0dpWlfkxf5RCEgfw 提取码&#xff1a;v62e 二、安装 安装视频网址&#xff1a;Java基础概念-12-idea的概述和下载安装_哔哩哔哩_bilibili 三、idea中的第一…

Postman内置动态参数和自定义动态参数

业务场景 现在有两个接口&#xff0c;接口1&#xff1a;获取接口统一鉴权码token接口&#xff0c;接口2&#xff1a;创建标签接口&#xff0c;标签接口的创建依赖接口1返回的鉴权码&#xff0c;即需要获取access_token的值&#xff0c;替换ACCESS_TOKEN。且接口2中标签名不能和…

【计算机硬件内存】

内存插槽中间通常有个突起物将整个插槽稍微切分成为两个不等长的距离&#xff0c; 这样的设计可以让使用 者在安装内存时&#xff0c;不至于前后脚位安插错误&#xff0c;是一种防呆的设计喔。 前面提到CPU所使用的数据都是来自于内存&#xff08;main memory&#xff09;&…

Java流程控制04:while循环结构

教学视频链接&#xff1a;https://www.bilibili.com/video/BV12J41137hu?p38&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p38&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 在Java中&#xff0c;while 结构是一个…

【C语言】深入讲解指针(中)

文章目录 前言函数指针函数指针变量的创建函数指针变量的使用两段有趣的代码typedef 关键字 函数指针数组函数指针的使用最后 前言 上一章深入讲解指针&#xff08;上&#xff09;我们对字符指针、数组指针、指针和数组传参进行了讲解&#xff0c;本章将对函数指针进行讲解&am…

Java、python、php版的大学生家教预约服务系统的设计与实现(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

滚珠丝杆磨损评估:何时需进行研磨修复的关键指标?

滚珠丝杆是一种常见的机械传动元件&#xff0c;是将回转运动转化为直线运动&#xff0c;或将直线运动转化为回转运动的理想产品&#xff0c;在工具机械和精密机械上最常使用的传动元件。由于长时间使用或使用方法不当&#xff0c;滚珠丝杆可能会出现磨损、折裂、腐蚀等问题。影…

开机启动项检查

目录 介绍步骤总结 介绍 Windows在启动的时候&#xff0c;会自动加载很多程序。这些程序的自启动&#xff0c;带来了便利&#xff0c;但如果是恶意的自启动程序&#xff0c;我们就要关闭掉。 步骤 1、在开机后&#xff0c;打开了一个flag文件&#xff0c;里面填写了一个flag…

【解析几何笔记】4.向量分解定理的应用

4.向量分解定理的应用 4.1 简单比&#xff08;定比&#xff09; 【例1.3】&#xff08;由 ( A , B , D ) , ( C , A , F ) (A,B,D),(C,A,F) (A,B,D),(C,A,F)可以看出用 A C ⃗ , A B ⃗ \vec{AC},\vec{AB} AC ,AB 和从A点做起点的向量方便解题&#xff0c;再看题目所求的简单比…

Spring 事务配置类,完成数据库的转账

1、完成基本的三层架构 1.1创建Account表 创建实体类 Account 1.2 Service层写入 AccountService 接口 Service层 下写 impl 包定义 AccountServiceImpl 类 实现接口 AccountService Service Transactional RequiredArgsConstructor public class AccountServiceImpl impleme…

【网络】高并发场景处理:线程池和IO多路复用

文章目录 短时间内有大量的客户端的解决方案线程池IO 多路复用 短时间内有大量的客户端的解决方案 创建线程是比较经典的一种服务器开发模型&#xff0c;给每个客户端分配一个线程来提供服务 但一旦短时间内有大量的客户端&#xff0c;并且每个客户端请求都是很快的&#xff…

电路笔记(PCB):串扰的原理与减少串扰的几种方法

串扰 串扰&#xff08;Crosstalk&#xff09;是指在电路中&#xff0c;一条信号线上的电磁干扰不经意间耦合到另一条相邻的信号线上&#xff0c;从而影响其正常信号传输的现象。串扰会导致相邻信号线上的信号出现畸变或噪声&#xff0c;从而影响信号的完整性和电路的正常工作。…

【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在智能制造中的应用案例:液压动力装置

Poppe Potthoff是一家专门从事高压领域技术研发和产品制造的集团公司&#xff0c;该公司为汽车行业、特种车辆行业、船舶行业等开发制造先进的技术产品。 信迈提供ARMCodesys国产化定制。 Poppe Potthoff在其诺德豪森工厂研发用于爆破测试&#xff0c;自应力加工、脉冲测试和…

深度学习-------------------使用块的网络VGG

目录 VGGVGG块VGG架构进度总结 使用块的网络&#xff08;VGG&#xff09;VGG块VGG网络观察每层输出的形状该部分总代码 训练模型 VGG AlexNet比LeNet更深更大&#xff0c;以得到更好的精度 能不能更深和更大&#xff1f;该如何更深更大&#xff1f; 选项&#xff1a; 更多的…