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.