1、for-of 循环
特性:循环内部可以相应break,continue,return语句
循环数组:
var arr = ["abc","sadf"];
for(var str of arr){
console.log(str);
}
循环对象:
var someObj = {xx:"sdfd"};
for(var key of Object.keys(someObj)){
console.log(key+" : "+someObj[key]);
}
2、生成器(Generators)
特性:一个方法,多次返回。(普通函数使用 function 声明,而生成器函数使用 function*声明。)
例子:
function* test(name){
yield "你好,"+name;
yeild "谢谢!";
if(name.startsWith("X")){
yeild '你的名字是X开头';
}
yeild "再见!";
}
//调用
let testFun = test("啊哈哈");
testFun.next(); //{ value: "你好,啊哈哈", done: false }
testFun.next(); //{ value: "谢谢!", done: false }
testFun.next(); //{ value: "再见!", done: false }
testFun.next(); //{ value: undefined, done: true }
3、模板字符串
使用反撇号`代替引号,使用${}占位。
模板字符串中所有的空格、新行、缩进,都会原样输出在生成的字符串中。
例子:
var userName = "张三";
var message = `你好,${userName}`;
console.log(message);//你好,张三
4、解构对象
提供更灵活的接收参数方式。
例1:
var {xm,xh} = {xm:'张三',xh:'1203'};
console.log(xm,xh);//张三 1203
例2:
var [first,second,...moreArr] = [1,2,3,4,5,6];
console.log(first,second,moreArr);//1 2 [3,4,5,6]
例3:接收空值的时候可以赋默认值
var {xm='张三',xh='1001'} = {xm:'李四'};
console.log(xm,xh);//李四 1001
例4:多重对象解构
var obj = {
url:'/xx/aa',
params:{
arr:[1,2,3],
title:'标题',
objArr:['第一',{second:'第二'}]
}
}
var {params:{objArr:[first,{second}]}} = obj;
console.log(first,second);//第一 第二
5、箭头函数
写法:(...params)=>{//TODO } //params为传入参数,TODO后实现方法体
箭头函数没有自己的this值,this值继承自外围作用域。
特性:循环内部可以相应break,continue,return语句
循环数组:
var arr = ["abc","sadf"];
for(var str of arr){
console.log(str);
}
循环对象:
var someObj = {xx:"sdfd"};
for(var key of Object.keys(someObj)){
console.log(key+" : "+someObj[key]);
}
2、生成器(Generators)
特性:一个方法,多次返回。(普通函数使用 function 声明,而生成器函数使用 function*声明。)
例子:
function* test(name){
yield "你好,"+name;
yeild "谢谢!";
if(name.startsWith("X")){
yeild '你的名字是X开头';
}
yeild "再见!";
}
//调用
let testFun = test("啊哈哈");
testFun.next(); //{ value: "你好,啊哈哈", done: false }
testFun.next(); //{ value: "谢谢!", done: false }
testFun.next(); //{ value: "再见!", done: false }
testFun.next(); //{ value: undefined, done: true }
3、模板字符串
使用反撇号`代替引号,使用${}占位。
模板字符串中所有的空格、新行、缩进,都会原样输出在生成的字符串中。
例子:
var userName = "张三";
var message = `你好,${userName}`;
console.log(message);//你好,张三
4、解构对象
提供更灵活的接收参数方式。
例1:
var {xm,xh} = {xm:'张三',xh:'1203'};
console.log(xm,xh);//张三 1203
例2:
var [first,second,...moreArr] = [1,2,3,4,5,6];
console.log(first,second,moreArr);//1 2 [3,4,5,6]
例3:接收空值的时候可以赋默认值
var {xm='张三',xh='1001'} = {xm:'李四'};
console.log(xm,xh);//李四 1001
例4:多重对象解构
var obj = {
url:'/xx/aa',
params:{
arr:[1,2,3],
title:'标题',
objArr:['第一',{second:'第二'}]
}
}
var {params:{objArr:[first,{second}]}} = obj;
console.log(first,second);//第一 第二
5、箭头函数
写法:(...params)=>{//TODO } //params为传入参数,TODO后实现方法体
箭头函数没有自己的this值,this值继承自外围作用域。