平時在script標簽或JS文件定義一個函數是這樣的:
const fn = function(){ consolo.log("") }
如果是在對象字面量中定義函數的話,有如下兩種方式:
const fn = { fn1: function(){}, fn2(){} }
而在ES6中又引入了一種對函數的定義方式:箭頭函數,標准示例如下:
const jiantou = (num1,num2) => { console.log(num1+num2) return num+num2 }
上面的(num1+num2)是參數列表,后面的{ }是方法體;但主要說的並不是這種方式,他還有特別的寫法:
當只有一個參數,方法體中的代碼只有一行時,他可以下面的寫法:
const jiantou = num => num
上面代碼意思是:參數是num,方法體是return num;做一個總結:當參數只有一個時,()是可以省去的(無參是不可以省去的),當方法體只有一行代碼時,{}是可以省去的,並且記住這行代碼實際上前面會跟上一個return的,但很多人在想,那我這個函數沒有返回值,他返回什么呢?那他返回就是一個undefined
說完箭頭函數,再說一下箭頭函數中的this和普通定義的函數中this有什么區別吧,看到下面的代碼:
當我們調用obj.add()函數時,function()中的this指向的是window對象;而箭頭函數指向的是obj,這是怎么回事呢?
對於function()中的this,指向的是最外層的對象,即 window
而箭頭函數中的this他是指向的最近作用域的對象,也就是說最近調用它的對象,在上面的例子,obj就是最近調用它的對象