我目前正在学习Javascript,并且已经注意到该语言具有多种声明函数的方法。
(对我而言)最简单的方法如下:
function foo(test) {
return test + 1;
};
但是,似乎还有:
var foo = function *optional*(test){
return test + 1;
};
在此方法(^)中,如果分配名称有什么区别?它会基本上说“可以在foo下或 optional 下找到此函数”
另一个选项似乎是一个“箭头功能”,与其他选项相比要简化得多,我知道它也可以用大括号括起来写...
var foo = (test) => return test + 1;
`
var foo = (test) => {
return test + 1;
};
此外,我认为您可以在箭头定义中明确地说出单词function,如下所示:
var foo = function(test) => {
return 'test' + 1;
};
何时使用每一种,哪个是更标准的,除了写法不同外,还有哪些明显的区别?关于功能,我还应该了解什么吗?
答案 0 :(得分:2)
回答您的问题。没有重大区别。但是,这是一个有趣的问题,称为“吊装”,可能会真正使您发疯。这是链接https://developer.mozilla.org/en-US/docs/Glossary/Hoisting
出去找与道格拉斯·克罗克福德(Douglas Crockford)合作的视频。他是《 JavaScript的精髓》的作者。
答案 1 :(得分:1)
除了上面提到的Hoisting之外,还必须要获得函数名称。
看看MDN Function.name,您会发现棘手的问题。好的函数命名非常有用,尤其是在调试时。
您的代码中有两个错字,我已解决
var foo = (test) => return test + 1; // return already is '=>'
var foo = function(test) => { // 'function' can't go with '=>'
return 'test' + 1;
};
应该是
var foo = (test) => test + 1;
var foo = function(test) {
return 'test' + 1;
};