JavaScript功能最佳实践

时间:2018-02-26 19:12:59

标签: javascript function

我是JavaScript的新手,目前正在学习写作功能的简写。我刚学习时遇到过这个问题:

const groceries = (groceryItem) => ' - ' + groceryItem;

在现实世界中编写这样的函数是否可接受/最佳实践? (没有回报,没有括号)我注意到扩展可能很烦人。或者这只是标准做法?

我也注意到没有括号的语句。也是标准做法?

我想早点学习好习惯,所以对此事的任何建议都会非常感激。

3 个答案:

答案 0 :(得分:1)

有几种方法可以声明函数,每种方法都有用例和优缺点。因此,没有"首选"方式即可。根据您的具体情况使用适当的语法。

以下是设置功能的不同方法的摘要,并简要说明每种功能。单击标题链接以指向该类型的更深入资源:

<强> Function Declaration

function foo(){

}

使用函数声明,整个函数将被提升(无论它在代码中的实际位置如何)到封闭范围的顶部。这使得可以在声明点之前调用该函数。

<强> Function Expression

var foo = function(){


}

函数表达式只是将函数(作为数据)赋给变量的变量声明。与函数声明一样,此处也存在提升,但只有变量(此示例中为foo)声明才会被提升,而不是赋值,因此在这种情况下,您无法在声明之前调用该函数。

<强> Arrow Functions

const groceries = (groceryItem) => ' - ' + groceryItem;

这只是一种简短的语法,而不是使用函数表达式。但是,箭头功能有所不同。使用箭头函数时,this绑定到的对象在函数内不受影响,而在非箭头函数中受影响。

<强> Immediately Invoked Function Expression

(function(){

})();

立即调用函数表达式(IIFE)是一个匿名函数(一个没有名称的函数),它通过用括号括起来变成表达式,然后立即用另一组括号调用。此语法在JavaScript中非常常见,用于创建与其他范围不冲突的scope

注意:

Functions 是JavaScript的工作,根据您设置和调用它们的方式,它们可以执行许多不同的操作:

  • 它们可以是直接可调用代码的单位。
  • 它们可以是变量或属性的值。
  • 它们可以是用于实例化Object的构造函数 实例
  • 它们可以是通过参数传递的原始数据。

答案 1 :(得分:0)

是的,我认为这被认为是可以接受的,因为箭头功能是专门设计的。箭头函数的一个特性是它们允许将非常简单的函数写成这样的单行。当您可以将返回值计算为单个表达式时,您无需在其周围使用大括号或return语句明确地编写主体。这使得传统函数不必要地冗长,具有比函数的实际代码更多的样板。传统的替代方案如下:

const groceries = function(groceryItem) {
    return ' - ' + groceryItem;
}

在定义命名函数时,这并不是那么糟糕,但是当您使用匿名函数作为回调时,所有这些详细程度都可能会模糊意图。比较:

newarray = oldarray.map(function(x) {
    return x * x;
}

使用:

newarray = oldarray.map(x => x * x);

箭头功能是该语言的最新成员,因此我认为我们可以假设该设计得到了重视。如果Javascript社区不认为像这样的速记函数是个好主意,那么它们就不会被允许了。

答案 2 :(得分:-1)

The function you wrote is what is commonly known as a "arrow function". They can prove very useful when you get to a somehow more advanced level in JavaScript and there is absolutely nothing wrong with them. On the contrary. Very commonly used with "higher order functions" for arrays, to give an example.