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(); //

而现在可以这么做

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

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

ES6学习笔记<四> default、rest、Multi-line Strings的更多相关文章

  1. ES6学习笔记四:Proxy与Reflect

    一:Proxy 代理. ES6把代理模式做成了一个类,直接传入被代理对象.代理函数,即可创建一个代理对象,然后我们使用代理对象进行方法调用,即可调用被包装过的方法: 1)创建 var proxy = ...

  2. ES6学习笔记四(类和对象)

    { // 构造函数和实例 class Parent{ constructor(name='mukewan'){ this.name=name; } } let v_parent=new Parent( ...

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

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

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

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

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

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

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

    学习参考地址1  学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...

  7. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  8. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

  9. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

随机推荐

  1. Spring4相关jar包介绍(转)

    Spring4相关jar包介绍 spring-core.jar(必须):这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当 ...

  2. centos7上为什么不使用libcgroup进行资源限制

    不使用libcgroup的原因 centos7上使用libcgroup进行资源限制可参考 https://blog.csdn.net/lanyang123456/article/details/814 ...

  3. HanLP代码与词典分离方案与流程

    之前在spark环境中一直用的是portable版本,词条数量不是很够,且有心想把jieba,swcs词典加进来, 其他像ik,ansi-seg等分词词典由于没有词性并没有加进来. 本次修改主要是采用 ...

  4. Python数据库编程

    http://lizhenliang.blog.51cto.com/7876557/1874283 http://blog.itpub.net/22664653/list/1/?cid=86471

  5. C# .NET 4.5 将多个文件添加到压缩包中

    string zipFilePath = @"d:\test.zip"; string file1 = @"D:\门头照处理\门店照片2018-3-19 wuxl\门店照 ...

  6. ubuntu 17.10.1 安装 virtual box 增强工具

    ubuntu 17.10.1 安装 virtual box 增强工具遇到 “  Please install the gcc make perl packages from your distribu ...

  7. java中构造方法和普通方法的区别

    1.普通方法: 定义:简单的说方法就是完成特定功能的代码块. 普通方法定义格式: 修饰符   返回值类型   方法名 (参数类型 参数名1,参数类型 参数名2,.........) { 函数体: re ...

  8. C/C++基础----用于大型程序的工具(异常处理,命名空间,多重继承)

    独立开发的子系统间协同处理错误的能力 使用各种库(可能包含独立开发的库进行协同开发的能力) 对比复杂的应用概念建模的能力 异常处理 异常将问题的检测和解决过程分离开 当执行一个throw之后,程序控制 ...

  9. mac brew 安装 nginx fpm mysql 教程

    一. 安装brew 要求:OS X 10.6以上系统,并且安装有XCode命令行工具 对于10.11的系统需要设置下local的权限为当前用户 $ sudo chown -R $(whoami):ad ...

  10. Web jsp开发学习——实现页面跳转和传参

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...