Javascript 有界加减法
您将如何使用JavaScript编写以下内容:Javascript 有界加减法,javascript,Javascript,您将如何使用JavaScript编写以下内容: Row-=21; if (Row < 1) { Row = 1; } 行-=21; 如果(第1行){ 行=1; } 您可以执行以下操作: Row = Math.max( Row-21, 1); 编辑: 如果您希望能够设置最小和/或最大范围,您可以将自己的函数原型化为Number Number.prototype.adjust = function( adj, min, max ) { if
Row-=21;
if (Row < 1) {
Row = 1;
}
行-=21;
如果(第1行){
行=1;
}
您可以执行以下操作:
Row = Math.max( Row-21, 1);
编辑: 如果您希望能够设置最小和/或最大范围,您可以将自己的函数原型化为Number
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;
};
- 第一个论点是调整
- 第二个参数是最小范围(传递null表示无最小值)
- 第三个参数是最大范围(传递null或留空表示无最大值)
Row = Math.max( Row-21, 1);
编辑: 如果您希望能够设置最小和/或最大范围,您可以将自己的函数原型化为Number
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;
};
- 第一个论点是调整
- 第二个参数是最小范围(传递null表示无最小值)
- 第三个参数是最大范围(传递null或留空表示无最大值)
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;
}
然后:
为了好玩,这里有一种用函数代替操作员角色的方法:
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;
}
然后:
对我来说,这看起来已经是有效的JavaScript了。@Chris:Hrm?我一直使用-=将变量减少一个值。不,没有<代码>行=-21,将其设置为负21。'行=-21'将减少21
Row-=21
是无效的语法,会导致语法错误。@Chris:你能给我指一个引用吗?我们说的是同一种语言吗?我写JavaScript已经很多年了。@Chris:在firebug:var x=10中试试这个;x=-1;控制台日志(x);您将看到输出为-1。在我看来,这似乎已经是有效的JavaScript了。@Chris:Hrm?我一直使用-=将变量减少一个值。不,没有<代码>行=-21,将其设置为负21。'行=-21'将减少21Row-=21
是无效的语法,会导致语法错误。@Chris:你能给我指一个引用吗?我们说的是同一种语言吗?我写JavaScript已经很多年了。@Chris:在firebug:var x=10中试试这个;x=-1;控制台日志(x);您将看到输出为-1。行-=21
不是JS的有效行-运算符为=-
@Chris-这在一篇文章中是3次。您不正确,运算符为-=。使用=-只会给目标变量分配一个负值。行-=21
不是有效的JS行-运算符是=-
@Chris-这在一篇文章中是3次。您不正确,运算符为-=。使用=-只会给目标变量分配一个负值。然而,原作并没有错,而且可以说更清晰。从技术上讲,是的。然而,原稿没有任何问题,而且可以说更清晰。
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