在this question一個答案是:邏輯或數字之間
Number.prototype.roundTo = function(nTo) {
nTo = nTo || 10;
return Math.round(this * (1/nTo)) * nTo;
}
是什麼意思?爲什麼我需要這樣做?
nTo = nTo || 10;
在this question一個答案是:邏輯或數字之間
Number.prototype.roundTo = function(nTo) {
nTo = nTo || 10;
return Math.round(this * (1/nTo)) * nTo;
}
是什麼意思?爲什麼我需要這樣做?
nTo = nTo || 10;
這在JavaScript中經常用於默認值。
邏輯OR(||
)返回第一個值,如果是truty或第二個,如果第一個是falsy。 當一個函數需要一個參數未傳遞時,函數獲得的值是undefined
,這是虛假的。這意味着,
var x = parm || default_value;
將使用default_value
萬一parm
未獲通過。
如果該值0
或空字符串""
然而作爲參數值可以接受的,這將無法工作,因爲0
和空字符串也falsy。
此外,如果參數的值也可以是undefined
(意思是應該使用undefined
而不是默認值),唯一的解決辦法是檢查arguments.length
。
請不要使用'default'作爲變量的名稱,因爲它是一種語言關鍵字... – Nayuki
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
這意味着如果沒有提供'nTo'參數,使用任意'10'代替。這就像一個默認值。 – Utkanos