2013-09-29 2 views
0

В this question один ответ заключается в следующем:логика OR между числами

Number.prototype.roundTo = function(nTo) { 
    nTo = nTo || 10; 
    return Math.round(this * (1/nTo)) * nTo; 
} 

Что это значит? Зачем мне это нужно?

nTo = nTo || 10; 
+4

Это означает, что если нет 'nTo' аргумент не указан, использовать произвольный' 10' вместо этого. Это похоже на значение по умолчанию. – Utkanos

ответ

2

Это значение часто используется в Javascript для значений по умолчанию.

Логическое ИЛИ (||) возвращает первое значение, если truty или второе, если первое является ложным. Когда функция ожидает параметр, который не передается, значение, которое получает функция, равно undefined, что является ложным. Это означает, что

var x = parm || default_value; 

будет использовать default_value в случае parm не передавалась.

Если значение 0 или пустая строка "", однако, приемлемым в качестве значения параметра это не будет работать, так как 0 и пустая строка также falsy.

Кроме того, если значение параметра также может быть undefined (то есть undefined должно использоваться, а не по умолчанию) единственным решением является проверка arguments.length.

+2

Пожалуйста, не используйте 'default' как имя переменной, потому что это ключевое слово языка ... – Nayuki

2
nTo = nTo || 10; 

Может быть реализован как коротка для

nTo = nTo ? nTo : 10; 

, который в свою очередь, является коротким для

if (nTo) { 
    nTo = nTo; 
} else { 
    nTo = 10; 
} 

Если nTo не является falsy значение, то nTo будет назначен nTo, иначе 10 будет присвоен nTo.

От http://docs.nodejitsu.com/articles/javascript-conventions/what-are-truthy-and-falsy-values

Список JavaScript falsy ценности

false // obviously 
0  // The only falsy number 
"" // the empty string 
null 
undefined 
NaN 
Смежные вопросы