哪个是定义函数的更好方法?

时间:2013-06-13 11:13:43

标签: javascript function user-defined-functions definition hoisting

它们之间有什么区别吗? 我一直在使用这两种方式,但不知道哪一种做什么,哪种更好?

function abc(){

    // Code comes here.
}

abc = function (){

    // Code comes here.
}

定义这些功能有什么区别吗?有点像i ++和++ i吗?

2 个答案:

答案 0 :(得分:7)

function abc(){

    // Code comes here.
}

将被悬挂。

abc = function (){

    // Code comes here.
}

不会被吊起。

例如,如果您这样做:

 abc(); 
 function abc() { }

代码将在abc被提升到封闭范围的顶部时运行。

如果你做了:

  abc();
  var abc = function() { }

abc已声明,但没有值,因此无法使用。

哪个更好更多是对编程风格的争论。

http://www.sitepoint.com/back-to-basics-javascript-hoisting/

答案 1 :(得分:1)

简答:没有。

您将该函数放在全局命名空间中。任何人都可以访问它,任何人都可以覆盖它。

标准的更安全的方法是将所有内容包装在自调用函数中:

(function(){
    // put some variables, flags, constants, whatever here.
    var myVar = "one";

    // make your functions somewhere here
    var a = function(){
        // Do some stuff here

        // You can access your variables here, and they are somehow "private"
        myVar = "two";
    };


    var b = function() {

        alert('hi');
    };

    // You can make b public by doing this
    return {
        publicB: b
    };
})();