javascript:函数的类型以及何时使用每种函数

时间:2018-08-01 23:05:26

标签: javascript

我目前正在学习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;
};

何时使用每一种,哪个是更标准的,除了写法不同外,还有哪些明显的区别?关于功能,我还应该了解什么吗?

2 个答案:

答案 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;
};