Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有界加减法_Javascript - Fatal编程技术网

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

您将如何使用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( 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'将减少21
Row-=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