2014-01-31 1 views
0

Я читаю через некоторый яваскрипт код, и я видел много кода, который выглядит следующим образом:В JS, что делает processMethod = processMethod || функция() {}; делать?

processMethod = processMethod || function(){}; 

это обычно находится внутри функции. Я считаю, что это сокращенный код, но я не уверен, что он делает.

Проверяет, имеет ли значение processMethod значение, и не объявляет его как функцию, которая может быть определена позже?

+0

означает, что 'processMethod' не существует, просто создайте пустую функцию, чтобы предотвратить' processMethod - неопределенная ошибка. ' – Praveen

+1

Извините # Раймонд Чен. Я понятия не имел, как задать вопрос или даже какие условия искать, прежде чем публиковать его. –

+0

Да, важной частью была пунктуация, которая SO не знает, как искать. –

ответ

1

В словах:

if there is no processMethod, create it empty. 

|| работа с булевыми, поэтому он проверяет, если первый операнд processMethod имеет булев-эквивалент. Если processMethod определен, а не null, булево эквивалент равен true. Если processMethod не определено или null, булево эквивалент равен false. В ложном случае || ищет логический эквивалент второго операнда, его значение не равно null, поэтому его булево эквивалент равен true.

false || true разрешает true поэтому processMethod становится function(){}.

Btwfunction(){} является пустой функцией которого используется, чтобы не бросить ошибку на processMethod()

+0

Спасибо, что имеет смысл. Все еще изучает сокращенные коды. –

1

Это по существу проверяет, существует ли он или нет. Если он не существует, назначьте его.

function doSomething(o) { 
    o = o || {}; 
} 

В приведенном выше случае, он проверяет, был ли принят значение o. Если нет, он присваивает ему пустой объект.

+0

В этом случае 'doSomething (0)', к сожалению, может быть изменено на '{}'. –

+1

Технически, но есть вероятность, что вы ожидаете, что объект не пройдет 0. –

+0

Правильно, это также соответствует конкретному вопросу OP. –

Смежные вопросы