6

Есть ли разница между ними? Я использовал оба способа, но не знаю, что делать, а что лучше?, который является лучшим способом определения функции?

function abc(){ 

    // Code comes here. 
} 

abc = function(){ 

    // Code comes here. 
} 

Есть ли разница в определении этих функций? Что-то вроде i ++ и ++ i?

+1

повторил вопрос: http://stackoverflow.com/questions/336859/javascript-var-functionname-function- vs-function-functionname – ikis

+0

Почему вы снова добавили тег 'html'? Этот вопрос не имеет никакого отношения к HTML! –

+0

Это потому, что люди могут рассмотреть этот вопрос с вопросом java - который использует объектно-ориентированный подход ... – Janak

ответ

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/

+0

Nitpick: * "Тогда' abc' еще не объявлен и не может быть использован. * * Объявления переменной также поднимаются, поэтому переменная объявляется, но она еще не имеет значения. –

+0

@FelixKling - обновлено. Приветствия. –

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 
    }; 
})(); 
Смежные вопросы