Можно создать дубликат:
JavaScript: var functionName = function() {} vs function functionName() {}декларирования JavaScript частных методов
В Javascript, "частные методы" в основном только внутренние функции. Но на протяжении различных яваскрипта учебники доступны в Интернете, кажется, есть две практики для объявляющих частных методов:
function foo()
{
var privateMethod = function() { }
}
против ...
function foo()
{
function privateMethod() { }
}
Они оба, кажется, добиться того же эффекта, т.е. privateMethod
является недоступны публично через экземпляр foo
. Единственная разница, по-видимому, с первым путем (с использованием ключевого слова var
), privateMethod
доступна только для кода, который приходит после декларации. Но со вторым способом privateMethod
доступен для всего кода в пределах foo
. Итак, есть ли другая разница, которая делает любой из этих двух методов предпочтительнее?
http://jsfiddle.net/cJHCL/ противоречит второй части вашего заявления для меня в Chrome –
@ Александр Павлов: Chrome просто терпит недопустимый синтаксис; см. разделы [12] (http://es5.github.com/#x12) (в частности, большое «ПРИМЕЧАНИЕ»), [13] (http://es5.github.com/#x13) и [10.5] (http://es5.github.com/#x10.5) спецификации. Попробуйте в Firefox, который следует букве закона. Но в Chrome, вот еще несколько интересных случаев и примеры того, почему вы этого не делаете: http://jsfiddle.net/cJHCL/1/ http://jsfiddle.net/cJHCL/2/ –
Абсолютно, это большой, не делай этого, просто указывая, что он работает на Chrome (v8, на самом деле.) OTOH, JS позволяет такие вещи, как 'if (foo) {var value = val1; } else {var value = val2;/* или вообще опустить это, чтобы получить «неопределенный» в значении * /} ', что также несколько запутывает. –