Fla*_*nix 10 javascript function
我一直都知道要在javascript中声明一个函数你应该做的事情如下:
function myfunction(fruit){
alert('I like ' + fruit + '!');
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
var myfunction = function(fruit){
alert('I like ' + fruit + '!');
};
Run Code Online (Sandbox Code Playgroud)
但是,最近,我注意到有些人实际上将函数定义为常量:
const myfunction = fruit=> alert('I like ' + fruit + '!');
Run Code Online (Sandbox Code Playgroud)
甚至使用关键字let:
let myfunction = fruit=> alert('I like ' + fruit + '!');
Run Code Online (Sandbox Code Playgroud)
此时我很困惑.
我认为这取决于您的需求.例如
这将myfunction在本地范围内使用名称定义您的函数
function myfunction(fruit){
alert('I like ' + fruit + '!');
}
Run Code Online (Sandbox Code Playgroud)
另一方面,下面的代码将定义一个名为变量的变量myfunction,该变量指向本地范围内的一个annonimous函数.
var myfunction = function(fruit){
alert('I like ' + fruit + '!');
};
Run Code Online (Sandbox Code Playgroud)
而下面的代码将定义当前日期所有浏览器都不支持的ECMA6的箭头功能.此外,letstatement声明一个块作用域局部变量,可选择将其初始化为一个值.因此myfunction,在代码块关闭后,您的变量将不会被看到.
let myfunction = fruit=> alert('I like ' + fruit + '!');
Run Code Online (Sandbox Code Playgroud)
let允许您将范围有限的变量声明为使用它的块,语句或表达式.您可以在此处阅读更多内容并查看示例
正如官方文件所说:
const声明创建对值的只读引用.它并不意味着它拥有的值是不可变的,只是不能重新赋值变量标识符.
const myfunction = fruit=> alert('I like ' + fruit + '!');
Run Code Online (Sandbox Code Playgroud)
因此,如果您尝试重新分配myfunction,它将失败(静默)(但在Safari中不会失败)
// this will fail silently in Firefox and Chrome
myfunction = fruit=> alert('No! I DO NOT like ' + fruit + '!');
Run Code Online (Sandbox Code Playgroud)
关于MDN参考文献的相似之处let和const相似之处
常量是块范围的,非常类似于使用let语句定义的变量.常量的值不能通过重新赋值来改变,也不能重新声明.
所以,正如Aurelio de Rosa所说,
常量与使用let声明的变量共享一个特性,因为它们是块作用域而不是函数作用域
了解更多关于const 这里
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |