es6中新增的定义函数的方式。
() => { }
const fn = ( ) => { }
箭头函数是用来简化函数定义的语法
const fn = ( ) => {
console.log(123);
}
fn() //123
函数体中的一句代码,且代码执行结果就是返回值,可以省略大括号
常见写法: function sum (num1 , num2){ return num1 + num2; } 简写: const sum = (num1,num2) => num1 + num2
const summ = ( n1 , n2 ) => n1 + n2 ;
const result = summ (10,20);
console.log(result); //30
如果形参只有一个,可以省略小括号
const fn1 = (v) => v;
const fn = v => {
alert(v);
}
fn(45)
箭头函数不绑定this的关键字,箭头函数中的this ,指向的是函数定义位置的上下文this。
const obj = {name:'丽丽' }
function fn(){
console.log(this);
return () => {
console.log(this);
}
}
const resFn = fn.call(obj);
resFn();
箭头函数不绑定this 箭头函数没有自己的this 关键字,如果在箭头函数中使用this,this关键字将指向箭头函数定义位置中的this
function fn () {
console.log(this);
return () => {
console.log(this);
}
}
const obj = {name:'喝喝'};
const resFn = fn.call(obj)
resFn();
箭头函数面试题:
var age = 100 var obj = { age :20, say:() => { alert(this.age) //这里是this是没定义 } } obj.say(); //100
剩余参数
剩余参数语法允许我们将一个不定数量的参数表示为一个数组
function sum (first,...args){
console.log(first) ; //10
console.log(args) ; //[20,30]
}
sum(10,20,30)
// args 是个数组会获取所有的
// 计算所有数的和
const sum = (...args) =>{
let total = 0;
args.forEach( item => {
total += item;
})
return total;
};
//上面的代码可以简化成
const sum = (...args) => {
let total = 0;
args.forEach(item => total += item);
return total;
}
//打印一下
console.log(sum(10, 20)); // 30
console.log(sum(10, 20, 30)); // 60
剩余参数和解构配合使用
案例一:
let students = ['小明','小浪','小扎'];
let [s1,...s2] = students;
console.log(s1); //'小明'
console.log(s2); //'小浪','小扎'
案例二:
let ary1 = ['小','中','大'];
let [s1,...s2] = ary1;
console.log(s2);