当前位置:   jquery > 正文

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

javascript,function,go,safari,firefox,chrome,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我一直都知道要在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`之间有什么区别吗?
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13453
推荐阅读
相关标签
  

闽ICP备14008679号