箭头函数
function method(){
}
let methods=()=>{ //无参
}
let methods=a=>{//有参a
}
let methods=(a,b)=>{//有参a,b
}
let data=()=>{
//执行代码
return true;
}
//let data=()=>true;
箭头函数的特点:保持上下文this指针一致
console.log(this);//window
let obj = {
sleep: function () {
console.log(this);//obj
setTimeout(() => {
console.log(this);//obj
}, 1000);
// setTimeout(function (){
// console.log(this);//window
// //如果要使用obj
// }, 1000);
}
}
obj.sleep();
函数简写
//对象上的函数
let stu = {
eat: function () {
},
work() {
return {
}
}
}
匿名函数变箭头
//对象上的 函数直接简写
//es6中的函数 可以进行参数的默认值
let stus = (x = 2, y = 10) => {
console.log(x, y);//2,10
}
指定了默认值以后,函数的length属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真
console.log(stus.length); //返回函数没有指定默认值个数 0
如果设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数了
let stus = (x=2,y,z) => {
console.log(x,y,z);//2 undefined undefined
}
stus();
console.log(stus.length);//0
let stus = (x,y=2,z) => {
console.log(x,y,z);//undefined 2 undefined
}
stus();
console.log(stus.length);//1
函数和解构赋值搭配使用
对象解构:
let fun3 = ({ a6, b6 }) => {
console.log(a6, b6);//1 2
}
fun3({ a6: 1, b6: 2 });
结构别名:
let a=1;
let b=2;
let [a1, b1] = [2, 1];
console.log(a1, b1);
函数和解构赋值搭配使用
let [a,...b]=[1,2,3,4];
a=1
b=[2,3,4]
let fun=([a,...b])=>{
console.log(a,b); //1 234
}
fun([1,2,3,4]);
rest 参数
获取函数多余的参数 使用是 扩展运算符 …
function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
add(2, 5, 3) // 10
函数的name属性
console.log(fun3.name)//fun3
箭头函数嵌套问题
let fun5=()=>{
console.log(this);//window
return ()=>{
console.log(this);
}
}
fun5();