Javascript嵌套函数 - 有什么区别?

时间:2013-12-23 10:14:21

标签: javascript function

我在思考以下Javascript最佳实践模式。我的代码中有一个函数,它有一些嵌套函数。应该首选以下哪种模式?为什么?

function parent() {
    function child1() {
        //child 1 code
    }

    function child2() {
        //child2 code
    }
    //parent code
    return {
        child1: child1,
        child2: child2
    };
}

function parent() {
    var child1 = function () {
        //child 1 code
    };
    var child2 = function () {
        //child2 code
    };
    //parent code
    return {
        child1: child1,
        child2: child2
    };
}

2 个答案:

答案 0 :(得分:5)

这两个版本之间的主要区别在于

var a = function(){ ...

函数是undefined,直到此行(但变量存在),而在

function a() { ...

自封闭函数开始以来定义了函数:

console.log(a); // logs "function a(){ return 2} "
console.log(b); // logs "undefined"
function a(){ return 2};
var b = function(){ return 2};

正如Jan指出的那样,第一个版本还定义了函数的name属性。

除此之外,没有区别,主要是风格问题,没有我所知道的最佳实践。

答案 1 :(得分:-1)

js中的所有命名函数都可以通过其名称访问。

另一个建议是。

var parent;

parent = function() {
  var child1, child2;
  child1 = function() {};
  child2 = function() {};
  return {
    child1: child1,
    child2: child2
  };
};