gpt4 book ai didi

javascript - 在 Javascript 中声明函数的最有效方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 02:39:25 25 4
gpt4 key购买 nike

我一直了解到,要在 javascript 中声明一个函数,您应该这样做:

function myfunction(fruit){
alert('I like ' + fruit + '!');
}

或类似的东西:

var myfunction = function(fruit){
alert('I like ' + fruit + '!');
};

然而,最近,我注意到有些人实际上将函数定义为常量:

const myfunction = fruit=> alert('I like ' + fruit + '!');

甚至使用关键字let:

let myfunction = fruit=> alert('I like ' + fruit + '!');

此时我很困惑。

  • 为什么有这么多定义函数的方法?
  • 我应该何时/何地使用每一个?
  • 哪种方式效率更高?

最佳答案

我认为这将取决于您的需求。例如

这将在您的本地范围内使用 myfunction 名称定义您的函数

function myfunction(fruit){
alert('I like ' + fruit + '!');
}

另一方面,下面的代码将定义一个名为 myfunction变量,它指向本地范围内的一个匿名函数。

var myfunction = function(fruit){
alert('I like ' + fruit + '!');
};

而下面的代码将定义一个 arrow function of ECMA6在当前日期并非所有浏览器都支持。此外,let 语句声明了一个 block 作用域局部变量,可选择将其初始化为一个值。所以你的 myfunction 变量在代码块关闭后将不会被看到。

let myfunction = fruit=> alert('I like ' + fruit + '!');

let 允许您声明范围限于使用它的 block 、语句或表达式的变量。您可以阅读更多内容并查看一些 examples here

正如官方文档所说:

The const declaration creates a read-only reference to a value. It does not mean the value it holds is immutable, just that the variable identifier cannot be reassigned.

const myfunction = fruit=> alert('I like ' + fruit + '!');

因此,如果您尝试重新分配 myfunction,它将失败(静默地)(但在 Safari 中不会失败)

// this will fail silently in Firefox and Chrome 
myfunction = fruit=> alert('No! I DO NOT like ' + fruit + '!');

关于 letconst 的相似性,MDN 引用中说

Constants are block-scoped, much like variables defined using the let statement. The value of a constant cannot change through re-assignment, and it can't be redeclared.

所以,作为Aurelio de Rosa says ,

constants share a feature with variables declared using let in that they are block-scoped instead of function-scoped

阅读更多关于 const here

关于javascript - 在 Javascript 中声明函数的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com