JavaScript 中的普通函式與箭頭函式?


普通函式與箭頭函式

箭頭函式用於更簡潔地編寫程式碼。普通函式箭頭函式的工作方式類似,但它們之間也有一些區別。讓我們簡要討論一下這些區別。

箭頭函式語法

let x = (params) => {
// code
};

普通函式語法

let x = function functionname(params){
// code
};

“this”關鍵字的使用

箭頭函式無法使用“this”關鍵字,而普通函式可以使用而不會出現任何問題。

示例

在下面的示例中,普通函式(矩形)和箭頭函式(正方形)都用在物件“num”內,該物件包含 len(長度)和 bre(寬度)屬性。我們的目標是使用箭頭函式計算正方形的面積(len*len)和使用普通函式計算矩形的面積(len*bre)。但是,由於箭頭函式中“this”關鍵字不起作用,因此正方形的面積值將返回“NaN”,而使用普通函式,我們得到了矩形的精確面積,如輸出所示。

線上演示

<html>
<body>
<script>
   var num = {
      len: 12,
      bre: 13,
      square:() => {
         document.write(this.len * this.len);
      },
      rectangle(){
         document.write(this.len * this.bre);
      }
   };
   num.square();
   document.write("</br>");
   num.rectangle();
</script>
</body>
</html>

輸出

NaN
156


“new”關鍵字的使用

箭頭函式不是“可構造的”而是“可呼叫的”,因此“new”關鍵字在這裡不起作用,而普通函式既“可呼叫”又“可構造”,因此“new”關鍵字在這裡起作用。

示例

在下面的示例中,使用“new”關鍵字將一些引數傳遞給普通函式箭頭函式。但是,由於箭頭函式不是“可構造的”,我們將得到一個錯誤,而普通函式將得到一個合法的輸出。

<html>
<body>
<script>
   var word = function(){
      document.write(JSON.stringify(arguments)); 
       ///  executes '{"0":"Tutorix","1":"Tutorialspoint"}' as output
   };
   new word("Tutorix","Tutorialspoint");  
   var newword = ()=> {
      document.write(JSON.stringify(arguments)); 
      //executes 'newword is not a constructor' as output
   };
   new newword("Tutorix","Tutorialspoint");
</script>
</body>
</html>

更新於:2019年8月26日

451 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.