箭頭函數(shù)
普通函數(shù)
命名函數(shù)
function fn1(){
}
//字面量形式
var fun2=function(){
}
//箭頭函數(shù)
var fn3=()=>{
console.log(a,b)
}
fn3(10,11);
//一個(gè)參數(shù)
var fn4=a=>{
console.log(a);
}
//沒有參數(shù)
//沒有參數(shù)的時(shí)候腕够,不能省略括號(hào)
var f5=()=>{
console.log(123);
}
//返回值
function aa(){
return 123;
}
let aa1=()=>123;//箭頭函數(shù)
//箭頭函數(shù)中如果只有一條 return 語(yǔ)句
// 則可以省略大括號(hào)
// 如果這個(gè)箭頭函數(shù)還有且只有一個(gè)形參
// 則小括號(hào)也可以省略
let aa1 = a => a + 1
function b(){
return function b1(a){
return a+1;
}
}
let b=()=>a=>a+1;
let b1=b()(1);
console.log(b1);
btn.onclick=function(){
console.log(this);//標(biāo)簽
}
btn1.onclick=()=>{
console.log(this);//window
}
btn.onclick=function(){
setInterval(function(){
console.log(this);
},3000)
}
btn.onclick=function(){
setInterval(()=>{
console.log(this);
},3000)
}
btn.onclick = function () {
btn1.onclick = function () {
console.log(this);
}
}
- 當(dāng)內(nèi)部函數(shù)使用箭頭函數(shù)時(shí)扮超,不會(huì)改變外部函數(shù)的this指向
- 總結(jié)
- 普通函數(shù)誰(shuí)調(diào)用我 我的this指向誰(shuí)
- 箭頭函數(shù) 我在誰(shuí)里面被定義我的this就指向誰(shuí)
let obj={
say:function(){
console.log(this);
},
eat:()=>{
console.log(this);
}
}
let {
say,
eat,
}=obj;
obj.say();
obj.eat();
給對(duì)象定義方法時(shí)不要使用箭頭函數(shù)
function Dog(){
this.say=function(){
console.log(this);
}
this.eat=()=>{
console.log(this);
}
}
let d1=new Dog();
d1.say();
d1.eat();