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(); //
而现在可以这么做
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学习笔记<四> default、rest、Multi-line Strings
ES6学习笔记<五> Module的操作——import、export、as
ES6学习笔记<四> default、rest、Multi-line Strings的更多相关文章
- ES6学习笔记四:Proxy与Reflect
一:Proxy 代理. ES6把代理模式做成了一个类,直接传入被代理对象.代理函数,即可创建一个代理对象,然后我们使用代理对象进行方法调用,即可调用被包装过的方法: 1)创建 var proxy = ...
- ES6学习笔记四(类和对象)
{ // 构造函数和实例 class Parent{ constructor(name='mukewan'){ this.name=name; } } let v_parent=new Parent( ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- ES6学习笔记<一> let const class extends super
学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
随机推荐
- 读DataSnap源代码(一)
Delphi的DataSnap用了一段时间了,但一直感觉有些地方还不够了解,所以花时间阅读了源代码,特作此烂笔头. Datasnap是在之前的WebBorker基础上搭建的,DataSnap向导自动生 ...
- 单进程与 多进程关系及区别(多进程系统linux)
单进程编程:顺序执行 数据同步 复杂度低 用途单一 多进程编程:同时执行 数据异步 复杂度高 用途广泛 1. 多进程的优势在于任务的独立性,比如某个任务单独作为一个进程的话,崩溃只影响自己的服务,其他 ...
- Debian下Netbeans编辑器字体锯齿现象
第一步:到你netbeans安装目录下的etc目录下,找到netbeans.conf文件,打开准备编辑:第二步:在netbeans_default_options后面加上-J-Dawt.useSyst ...
- JAVA循环语句
while循环 求1到5的和 循环输出26个英文字母分两行输出 do while循环 猜拳游戏 这里包含随机数的生成方法Math.random()中数为double[0,1)通过*10和强制类型转换可 ...
- vi 编辑器基本命令
命令模式(esc) k 上移一行j 下移一行h 左移一行l 右移一行 6j 下移6行 5k 上移5行 0 将游标放在一行的开始$ 将游标放在一行的末尾w 将游标移动到下一个单词b 将游标移动到上一个 ...
- js 复制文本到剪贴板
js 复制文本到剪贴板 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- STL基础--算法(排序)
STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,1 ...
- C++进阶--自定义new handler
//############################################################################ // 自定义new handler /* ...
- 【mysql】MySQL知识整理-死锁分析-性能优化等
[[TOC]] 常用操作指令 show databases:显示所有的数据库: use dbName: 使用指定数据库 show tables: 显示所有的数据表: desc tableName: 查 ...
- spring cglib实现嵌套方法拦截
使用spring 的拦截器对方法进行拦截,不管是动态代理,还是cglib, 只能拦截到被代理对象的调用方法,对于被调用方法里再调用同一对象里的其他方法就无法拦截到,就是我们说的嵌套拦截,之前文章里提及 ...