箭頭函數

一、箭頭函數介紹javascript

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

 二、寫法java

 若是隻有一條語句,能夠將{}和return省略掉app

v=>v+v;
//至關於
function (v){.
    return v+v;
}

 若是語句爲多條,則不能夠省略{}和return函數

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

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

(num1,num2)=>num1+num2;

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

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

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

//正常狀況
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屬性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

 箭頭函數不綁定thisblog

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

相關文章
相關標籤/搜索