您将如何在JavaScript中编写以下内容:
Row-=21;
if (Row < 1) {
Row = 1;
}
答案 0 :(得分:6)
你可以这样做:
Row = Math.max( Row-21, 1);
修改强>
如果您希望能够设置最小和/或最大范围,可以将自己的函数原型化为数字。
Number.prototype.adjust = function( adj, min, max ) {
if( isNaN( min ) ) min = -Infinity;
if( isNaN( max ) ) max = Infinity;
var res = this + ~~adj;
return res < min ? min : res > max ? max : res;
};
然后你可以像这样使用它:
Row = Row.adjust( -21, 1, 50 ); /* adjustment, min, max */
答案 1 :(得分:2)
Row = Row > 22 ? Row - 21 : 1;
答案 2 :(得分:0)
row-=21;
if (row < 1) {
row = 1;
}
这似乎已经是有效的JS。
唯一的区别是你需要将你的“行”变量声明为:
var row = 0;
答案 3 :(得分:0)
只是为了好玩,这里有一种用操作替换操作符角色的方法:
function makeBoundedOp( bound, addOrSub ){
var newfunc = function newfunc(value,change){
if( addOrSub === 'add' ){
var upperbound = bound;
return (value+change > upperbound) ? upperbound : value+change;
} else {
var lowerbound = bound;
return (value-change < lowerbound) ? lowerbound : value-change;
}
}
return newfunc;
}
现在建立你需要的任何特殊用途的有界算子函数:
var subtractBoundedOne = makeBoundedOp(1,'subtract');
var subtractBoundedTen = makeBoundedOp(10,'subtract');
var addBoundedFifty = makeBoundedOp(50,'add');
然后:
var row = 20;
subtractBoundedOne(row,12); // 8
subtractBoundedTen(row,12); // 10
addBoundedFifty(row,37); // 50