6

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

function abc(){

    // Code comes here.
}

abc = function (){

    // Code comes here.
}

定义这些函数有什么区别吗?像 i++ 和 ++i 这样的东西?

4

2 回答 2

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/

于 2013-06-13T11:15:29.257 回答
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
    };
})();
于 2013-06-13T11:20:58.033 回答