当前位置: 首页 > news >正文

ES6学习笔记四 default、rest、Multi-line Strings

default 参数默认值

在实际开发 有时需要给一些参数默认值。

在ES6之前一般都这么处理参数默认值

    function add(val_1,val_2){
        val_1 = val_1 || 10;
        val_2 = val_2 || 20;
        return console.log(val_1 + val_2);
    }
    add();    // 30

而现在可以这么做

    function add_1(val_1 = 5,val_2 = 10){
        return console.log(val_1 + val_2);    
    }
    add_1();    // 15

 

rest参数

rest参数类似C#中的params参数,以数组方式接收任意数量参数。

    function fun(...arr){
        console.log(arr);
    }
    class p{
        constructor(){
            this.a = "a";
            this.b = "b";
        }
    }
    let obj_p = new p();
    fun("w","e","s","t");    // ["w", "e", "s", "t"]
    fun("life");            // ["life"]
    fun(obj_p);        // [ 'obj'(p) ]

不论参数类型是什么均已数组方式接收。rest参数用 ... 作前缀来修饰参数。

    function fun(par,...arr){
        console.log(par);
        console.log(arr);
    }
    fun("w","e","s","t");    // w , ["e", "s", "t"]

par接收第一个参数"w";arr接收剩下的所有参数且生成数组。

来看一个综合例子

    function* fun(val,...arr){
        for(let i = 0; i < arr.length; i++){
            if(arr[i] <= 5){
                yield val + arr[i];
            }else if((arr[i] + val) > 10){
                return arr[i] + val;
            }
        }
    }
    let f_1 = fun(7,9,8,7,6,5,4,3,2,1,0);
    console.log(f_1.next());    // Object {value: 16, done: true}
    console.log(f_1.next());    // Object {value: undefined, done: true}

复习之前提到的生成器函数和yield,当第一次执行生成器函数变量就执行return,那么生成器函数的done值直接为true且不在执行迭代。

 

Multi-line Strings 多行字符串

    var str1 = `This life is the crossing of asea,
                        where we meet in the same narrow ship.`;
    var str2 = "This life is the crossing of asea," + "where we meet in the same narrow ship.";
    console.log(str1);
    // This life is the crossing of asea,
    //                where we meet in the same narrow ship.
    console.log(str2);
    // This life is the crossing of asea,where we meet in the same narrow ship.

这个特性很易懂,ES6之前做多行字符串需要用 加号 连接,ES6 仅需用反引号即可,而且反引号中的空格缩进都有用。

 

 

ES6学习笔记目录

ES6学习笔记<一> let const class extends super

ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

ES6学习笔记<三> 生成器函数与yield

ES6学习笔记<四> default、rest、Multi-line Strings

ES6学习笔记<五> Module的操作——import、export、as

转载于:https://www.cnblogs.com/MirageFox/p/7580908.html

相关文章:

  • SharePoint 2010 Excel Service 入门——在网页上显示Excel内容
  • New Concept English Two 33 94
  • 100%高度全屏自适应
  • Django REST框架--关系和超链接api
  • sql语句的字段转成Date
  • [转]java按指定编码写入和读取文件内容的类
  • Android开发者应该深入学习的10个开源应用项目
  • centos7.3 docker升级
  • volatile和synchronized的区别
  • 全国省市数据库 access 版
  • CodeSmith模板引擎系列-目录
  • 分布式术语
  • SQL中truncate table和delete的区别
  • Ruby on Rails (ROR)类书籍下载地址及其他(整理)
  • sql server 2005卸载后重装显示sql server database services和工作站组件、联机丛书和开发工具安装失败...
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Docker下部署自己的LNMP工作环境
  • Java Agent 学习笔记
  • JavaScript 奇技淫巧
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Python 基础起步 (十) 什么叫函数?
  • Vim Clutch | 面向脚踏板编程……
  • Vue2.x学习三:事件处理生命周期钩子
  • 关于List、List?、ListObject的区别
  • 前端学习笔记之观察者模式
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 第二十章:异步和文件I/O.(二十三)
  • ​2021半年盘点,不想你错过的重磅新书
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Lua:Lua调用C++生成的DLL库
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (arch)linux 转换文件编码格式
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Oracle)SQL优化技巧(一):分页查询
  • (二)fiber的基本认识
  • (四)模仿学习-完成后台管理页面查询
  • (算法)N皇后问题
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原)本想说脏话,奈何已放下
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 使窗口永不获得焦点
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net环境下的缓存技术介绍
  • .NET命令行(CLI)常用命令
  • .Net语言中的StringBuilder:入门到精通
  • ?.的用法
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Autowired自动装配
  • [14]内置对象
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Android]Android开发入门之HelloWorld
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]