箭頭函數


1、箭頭函數介紹

//ES6
let fn=v=>v; console.log(fn("好酷的箭頭函數!"));//好酷的箭頭函數!
//ES5
let fn=function(v){ return v; } console.log(fn("好酷的箭頭函數!"));//好酷的箭頭函數!

 2、寫法

 如果只有一條語句,可以將{}和return省略掉

v=>v+v;
//相當於
function (v){.
    return v+v;
}

 如果語句為多條,則不可以省略{}和return

v=>{
    var sum=0;
    for(let i=0;i<v;i++){
        sum+=i;
    }
    return sum;
}

 當沒有參數或有多個參數時,需要用括號()括起來:

(num1,num2)=>num1+num2;

 當省略{}和return時,如果返回的內容是一個對象,對象需要用括號()括起來

()=>({name:"laoliu"});

 箭頭函數不能用於構造函數

//正常情況
var Box=function(age){
    this.myAge=age;
}
var obj=new Box(20);
console.log(obj.myAge);//20

//箭頭函數
var Box=age=>{
    this.myAge=age;
}
var obj=new Box(20);//Box is not a constructor
console.log(obj.myAge);

 箭頭函數沒有prototype屬性

var Foo = () => {};
console.log(Foo.prototype); // undefined

 箭頭函數不綁定arguments

var arguments = 42;
var fn = () => arguments;
console.log(fn()); // 42
function foo() {
var f = (i) => arguments[0]+i;
return f(2);
}
console.log(foo(1)); // 3

 箭頭函數不綁定this

window.color = "red";
//let 聲明的全局變量不具有全局屬性,即不能用window.訪問
let color = "green";
let obj = {
color: "blue",
getColor: () => {
return this.color;//this指向window
}
};
let sayColor = () => {
return this.color;//this指向window
};
obj.getColor();//red
sayColor();//red

 箭頭函數無法使用 call()或 apply()來改變其運行的作用域

window.color = "red";
let color = "green";
let obj = {
  color: "blue"
};
let sayColor = () => {
  return this.color;
};
sayColor.apply(obj);//red

 

參考文獻:https://blog.csdn.net/u012149969/article/details/80261081

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM