3

可能重复:
JavaScript:var functionName = function() {} vs function functionName() {}

是否有任何适用的理由可以使用vars 声明函数而不仅仅是常规函数定义,尤其是在处理闭包时。

显然,在我演示之前,这可能没有多大意义,所以我会!

注意:我使用 require.js 来说明这一点

示例 A:我通常如何做事

define(function() {

    function foo(x) {
        return x + 42;
    }

    function bar(y) {
        return y + foo(y);
    }

    var MyObject = function(config) {
        // some sweet stuff
    }

    MyObject.prototype = {
        myFun: function(x) {
            return bar(x)
        }
    }

    return MyObject;
})

示例 B:我的看法

define(function() {

    var foo = function(x) {
        return x + 42;
    }

    var bar = function(y) {
        return y + foo(y);
    }

    var MyObject = function(config) {
        // some sweet stuff
    }

    MyObject.prototype = {
        myFun: function(x) {
            return bar(x)
        }
    }

    return MyObject;
})

我认为两者之间一定有一些区别,也许...... :)

感谢您的时间和精力!


编辑:试图以更明智的方式提出问题!

4

1 回答 1

0

没有真正的收获。var您在示例 A 中的函数声明将更改为函数表达式并提升到闭包的顶部,因此一旦示例 B 中的声明被提升,它们看起来与您在第一个示例中定义的相同。

您拥有的两种形式是函数表达式的显式分配和函数声明。函数声明被更改为函数表达式,并且声明本身被拉到函数的顶部(提升)。

在这里阅读更多:http: //elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/

于 2013-01-09T21:16:06.413 回答