数字之间的逻辑OR

时间:2013-09-29 11:39:18

标签: javascript

this question中,有一个答案如下:

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

这是什么意思?为什么我需要这样做?

nTo = nTo || 10;

2 个答案:

答案 0 :(得分:2)

这通常在Javascript中用作默认值。

逻辑OR(||)如果是truty则返回第一个值,如果第一个值是falsy则返回第二个值。 当函数需要一个未传递的参数时,函数得到的值是undefined,这是假的。这意味着

var x = parm || default_value;

将使用default_value,以防parm未通过。

如果值0或空字符串""可接受为参数值,则无效,因为0且空字符串也是假的。

此外,如果参数的值也可以是undefined(意味着undefined应该使用而不是默认值),唯一的解决方案是检查arguments.length

答案 1 :(得分:2)

nTo = nTo || 10;

可以实现

的缩写
nTo = nTo ? nTo : 10;

反过来又是

的缩写
if (nTo) {
  nTo = nTo;
} else {
  nTo = 10;
}

如果nTo为非虚假值,则nTo将分配给nTo,否则10将分配给nTo

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

javascript假值列表

false // obviously
0     // The only falsy number
""    // the empty string
null
undefined
NaN