为什么在Javascript中有两种不同的创建函数的方法?

为什么在Javascript中有两种不同的创建函数的方法?,javascript,function,Javascript,Function,在我的代码中,我有以下内容: var setTheme = function (color) { }; function setTheme(color) { }; 函数名实际上并不相同,但我在这里也使用了相同的名称。创建函数的两种方法有区别吗?有区别。通过函数定义,整个定义将被提升: foo(5); // Pops up 5 function foo(n) { alert(n); } 而在var中,声明被挂起,但分配未被挂起: foo(5); // Error! var f

在我的代码中,我有以下内容:

var setTheme = function (color) {

};

function setTheme(color) {

};

函数名实际上并不相同,但我在这里也使用了相同的名称。创建函数的两种方法有区别吗?

有区别。通过函数定义,整个定义将被提升:

foo(5); // Pops up 5

function foo(n) {
    alert(n);
}
而在
var
中,声明被挂起,但分配未被挂起:

foo(5); // Error!

var foo = function(n) {
    alert(n);
};
我注意到的另一个区别是,在ECMAScript 5严格模式下的Google Chrome Canary(目前,至少我还没有在许多其他浏览器中尝试过)上,函数定义的嵌套深度不能超过一级:

!function() {
    'use strict';

    function Blah() {
        function Lol() { // Error.
        }
    }
}();

这个问题已经回答了很多次。有很多方法可以称之为这些。据我所知,第一个是函数赋值,第二个是函数声明。第一个将提升
setTheme
到最近范围的顶部,但在到达实际分配的位置之前,它不会被定义为函数。第二个将把函数
setTheme
提升到顶部,这样您甚至可以在声明该函数之前使用它。在我看来,始终使用第一个。

所以,

获取集的JS函数

如果您需要一个私有实用程序来获取/设置/删除模型值,那么您可以像这样将函数声明为变量。这对于在函数计算声明时分配变量很有用

用于:简单版本

这是用JavaScript声明函数的最简单方法。比如说,我们想编写一个名为
setTheme(color)
的简单函数,它只接受一个参数
color
,对对象执行简单的
color
,或者返回值。这里有一些方法可以让你做到这一点

5种不同的方式:有趣的阅读:


看一看。第一种方法通常用作回调函数。这主要是控制函数执行的顺序。
    var setTheme = function (color) {

    };
function setTheme(color) {

};