是一个简单的单行工具,可以执行以下操作:
var asbMax = max
if (asbMax > 100000)
asbMax = 100000
其他语言允许您在一行中执行此操作,我想知道Javascript是否也有办法执行此操作。
答案 0 :(得分:4)
好吧,你可以使用三元运算符:
var asbMax = max > 100000 ? 100000 : max;
建议防止允许的最大值上的进一步拼写错误:
var allowedMax = 100000;
var asbMax = max > allowedMax ? allowedMax : max;
答案 1 :(得分:2)
如果您想确保foo
不超过123
,有几种方法可以做到:
// the way you have
if (foo > 123) {
foo = 123;
}
// using ternary operators
foo = foo > 123 ? 123 : foo;
// using Math.min
foo = Math.min(foo, 123);
// using a method from http://sugarjs.com/
var minimumValue = 0;
foo = foo.clamp(minimumValue, 123);
// using https://github.com/hughsk/clamp for Node.js
var clamp = require("clamp");
var minimumValue = 0;
foo = clamp(foo, minimumValue, 123);
答案 2 :(得分:2)
虽然您绝对可以使用三元运算符,但您的特定方案的另一个选项是使用Math.min
。这是一个例子:
var asbMax = Math.min(max, 100000);
此方法返回传递给它的参数中的最小数字。因此,如果max
小于100000
,则会返回max
。但如果max
大于100000
,则会返回100000
。
<强>参考:强>
答案 3 :(得分:0)
var asbMax = (max > 100000) ? 100000 : max;