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

时间:2012-07-05 03:34:41

标签: javascript function

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

var setTheme = function (color) {

};

function setTheme(color) {

};

函数名称实际上并不相同,但我在此处添加了相同的名称。创建函数的两种方式有区别吗?

3 个答案:

答案 0 :(得分:3)

有区别。使用函数定义,整个定义将被挂起:

foo(5); // Pops up 5

function foo(n) {
    alert(n);
}

鉴于var,声明已悬挂,但作业不是:

foo(5); // Error!

var foo = function(n) {
    alert(n);
};

我注意到的另一个不同之处是,在Google Chrome Canary上(目前至少,我还没有尝试过很多其他浏览器)在ECMAScript 5严格模式下,函数定义不能嵌套多个深度:

!function() {
    'use strict';

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

答案 1 :(得分:1)

<强>因此,

get set的JS函数

    var setTheme = function (color) {

    };

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

对于: 简单版

function setTheme(color) {

};

这是在JavaScript中声明函数的最简单方法。比方说,我们想编写一个名为setTheme(color)的简单函数,它只接受一个参数color,在对象上做一个简单的color或返回值。您可以通过以下几种方式完成此操作。

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

http://www.jquery4u.com/jquery-functions/5-ways-declare-functions-jquery/

答案 2 :(得分:0)

这已被多次回答。有很多方法可以称呼它们。据我了解,第一个是功能分配,第二个是功能声明。第一个将setTheme提升到最近范围的顶部,但它不会被定义为函数,直到它到达实际分配的位置。第二个将函数setTheme提升到最顶层,这样你就可以在声明它之前使用它。 IMO,始终使用第一个。