Javascript中这两种写作函数的区别是什么?

时间:2012-07-31 20:53:45

标签: javascript

我正在努力找出以下两个版本的Javascript功能

之间有什么好处
var FirstName = function(){
    var value = 0;

    this.getValue = function(){
        return value;
    }
}

var FirstName = function(){
    var value = 0;

    return {
        getValue: function(){
            return value;
        }
    }
}

我明白后者形成了一个闭包但我不明白,从使用的角度来看,第二种风格的封闭在第一种风格中提供了什么优势呢?

编辑:根据Felix的评论,这两个函数形成了封闭。从语义上讲,这两个函数之间没有区别(据我所知)。那么哪种方式首选?有没有指南?

2 个答案:

答案 0 :(得分:0)

在这种情况下,第二种方式似乎有点多余。但我确信在某些情况下使用第二种方式可能更有利。我个人选择第一个,因为它通常会使代码更清晰,更容易混淆。这只是一个偏好的事情。无论您喜欢哪种方式,以及与您正在处理的其余代码一致的方式。一致性是最重要的。

答案 1 :(得分:0)

第一种方法不返回任何东西,只是将函数创建为全局变量,而第二种方法返回内部函数作为对象的成员。

通过返回内部函数,您可以在整个代码中设置和维护函数的不同状态,而对于第一个函数,它将在每次运行时覆盖该方法。好像后者更灵活..

你可以搞砸我制作的demo