当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Javascript中声明函数的最有效方法是什么?》经验,为你挑选了1个好方法。

我一直都知道要在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 + '!');

此时我很困惑.

为什么有这么多定义函数的方法?

何时/何地我应该使用每一个?

哪种方式更有效?

thiagoh.. 9

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

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

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

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

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

而下面的代码将定义当前日期所有浏览器都不支持的ECMA6的箭头功能.此外,letstatement声明一个块作用域局部变量,可选择将其初始化为一个值.因此myfunction,在代码块关闭后,您的变量将不会被看到.

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

let允许您将范围有限的变量声明为使用它的块,语句或表达式.您可以在此处阅读更多内容并查看示例

正如官方文件所说:

const声明创建对值的只读引用.它并不意味着它拥有的值是不可变的,只是不能重新赋值变量标识符.

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 + '!');

关于MDN参考文献的相似之处letconst相似之处

常量是块范围的,非常类似于使用let语句定义的变量.常量的值不能通过重新赋值来改变,也不能重新声明.

所以,正如Aurelio de Rosa所说,

常量与使用let声明的变量共享一个特性,因为它们是块作用域而不是函数作用域

了解更多关于const 这里



1> thiagoh..:

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

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

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

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

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

而下面的代码将定义当前日期所有浏览器都不支持的ECMA6的箭头功能.此外,letstatement声明一个块作用域局部变量,可选择将其初始化为一个值.因此myfunction,在代码块关闭后,您的变量将不会被看到.

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

let允许您将范围有限的变量声明为使用它的块,语句或表达式.您可以在此处阅读更多内容并查看示例

正如官方文件所说:

const声明创建对值的只读引用.它并不意味着它拥有的值是不可变的,只是不能重新赋值变量标识符.

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 + '!');

关于MDN参考文献的相似之处letconst相似之处

常量是块范围的,非常类似于使用let语句定义的变量.常量的值不能通过重新赋值来改变,也不能重新声明.

所以,正如Aurelio de Rosa所说,

常量与使用let声明的变量共享一个特性,因为它们是块作用域而不是函数作用域

了解更多关于const 这里


怎么样`const`?`const`和`let`之间有什么区别吗?
推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有