您的位置:首页 > Web前端 > JavaScript

js-es6-函数扩展

2017-10-03 21:47 225 查看
参数默认值

function foo(x=2,y=5){
console.log('x :'+x,'y :'+y);
}
foo();//x :2 y :5
foo(3);//x :3 y :5
foo(3,4);//x :3 y :4
注意默认值后面不可以再有不是默认值的变量,前面可以有不是默认值的变量
function foo(x,y=5){
console.log('x :'+x,'y :'+y);
}
foo(2);//x :2 y :5
// 不可以这样写
function foo(x,y=5,z){}

剩余参数  把剩下的参数存放在数组里,剩余参数后面不能再跟参数了

function fn(m,n,...rest){
for(let i in rest){
console.log(i);//0 1 2
}
}
fn(1,2,3,4,5);
//把连续的数组转换成分散的
console.log('a',...[1,2,4]);//a 1 2 4


箭头函数  箭头函数前面是参数,箭头后面是返回值

多个或者另个参数需要带小括号

let arr=[1,2,3];
let result=arr.sort((a,b)=>b-a);
console.log(result);//[3, 2, 1]


当有一个参数的时候,可以省略括号

let arrow=v=>v*3;
console.log(arrow(2));//6


如果箭头函数体内含有多行代码,函数体内需要加花括号
let fn=(a,b)=>{
a=a*2;
b=b*2;
return a+b;
}
console.log(fn(1,2));//6


如果想要返回对象的时候,需要函数体用小括号包裹,函数体内花括号包裹返回的对象

let fn=(a,b)=>({a,b});
console.log(fn(1,2));//{a: 1, b: 2}


注意事项

1.箭头函数体内没有自己的this对象,所以在使用的时候,其体内的this就是定义时所在的环境对象,而不是使用时所在环境的对象

function fn(){
setTimeout(function(){
console.log(this);////Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …}
},1000);
setTimeout(()=>{
console.log(this);//{a: 1}
},1500);
}
var obj={a:1};
fn.call(obj);


2.箭头函数体内没有arguments对象,如果要用,可以用rest参数代替

function fn(){
setTimeout(()=>{
console.log(arguments);//[1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
},1000);
}
fn(1,2,3);


3.不可以当做构造函数,不可以使用new命令,否则会抛出错误

const fn=(a,b)=>a+b;
const f=new fn(1,2);//会报错

4.箭头函数不能用作Generator函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: