Javascript 通过每次传递相同的数字,打印通过传递参数增加的数字

Javascript 通过每次传递相同的数字,打印通过传递参数增加的数字,javascript,Javascript,第一次调用get_增加(1)\outputs 1 |所需输出1 第二次调用get_增加(1)\outputs 1 |所需输出2 第三次调用get_增加(1)\outputs 1 |所需输出3 等等 条件:声明函数时不在函数外部设置任何变量。您需要在函数外部设置变量以保存新值。另外,您需要一个不同的变量作为增量值传递 number=0; 功能得到增加(inc){ 数字+=公司 } 得到增加(1); 控制台日志(编号); 得到增加(1); 控制台日志(编号)正如@VLAZ所说,保持数字的唯一方法是

第一次调用get_增加(1)\outputs 1 |所需输出1

第二次调用get_增加(1)\outputs 1 |所需输出2

第三次调用get_增加(1)\outputs 1 |所需输出3 等等


条件:声明函数时不在函数外部设置任何变量。

您需要在函数外部设置变量以保存新值。另外,您需要一个不同的变量作为增量值传递

number=0;
功能得到增加(inc){
数字+=公司
}
得到增加(1);
控制台日志(编号);
得到增加(1);

控制台日志(编号)正如@VLAZ所说,保持数字的唯一方法是为其分配一个变量。这不是最佳实践,但我在window全局变量中分配了结果

函数得到增加(数字){
console.log('编号:',编号)
窗口。\编号=窗口。\编号?窗口。\编号+编号:编号
返回窗口。\u编号
}
控制台日志(增加(1))
控制台日志(增加(2))

log(get_increased(3))
为了做到这一点,您需要在其他地方保存该值。典型的模式如下所示:

功能计数(起始编号){
控制台日志(起始编号);
返回函数(编号){
起始编号+=编号;
控制台日志(起始编号);
}
}
var tally1=tally(1);
第1(1)条;
第1(1)条;
第1(1)条;
var tally2=计数(3);
高度2(1);
高度2(2);

身高2(3)未按预期增加“数字”

给定代码中有两个主要问题。请参阅下面更改的代码,了解3种不同的场景

  • Javascript通过值传递数字,而不是通过引用。因此,get_incremented的初始调用相当于get_incremented(1)(我假设您从下面的示例中的number=1开始)。然后,该函数使用名为number的变量,但它是该函数的局部变量,而不是最初声明的var编号。它将其输出到控制台,然后将其自身的值(恰好为1)增加,但该版本的变量号不存在于运行get_increased的实例之外
  • 要增加一个名为number的变量,并使其持续到下一个get_调用增加,以及下一个和下一个。。。。我们可以在函数外部声明它,并让函数使用它(获取其值和更新其值),请参阅下面代码中的第二组脚本

  • 然而,即使我们使get_增加,使用这个更持久的变量,行

    数字+=数字

  • 将number的值添加到自身中-每次将值加倍,因此我们可以在console.log中看到1 2 4 8等,将值增加1,代码是

    function get_increased(number)
        {   
            console.log(number)
            number += number
        }
    
    它的意思和

     number +=1
    
    下面是要试用的3套脚本

    number = number + 1
    
    
    var数=1;
    
    对于(var i=0;iYou接收
    number
    并仅更改
    number
    。如果要保留该值,则需要使用不同的变量名,否则每次只能使用一个。听起来像是关于closuresget的课程,去掉传入的参数,脚手架将使其按您的意愿工作。它将有范围从outsi开始编号或者返回新值(返回编号;),并将其分配给传入的值。是否可以不在函数外部设置变量?
    <script>
    var number=1;
    for (var i=0;i<5;i++) {
      get_increased(number);
    }
    function get_increased(number)
        {   
            console.log(number);
            number += number; //number is local to the get_increased function
        }
    </script>
    
    <script>
    var number=1;
    
    for (var j=0;j<5;j++) {
      get_increased();
      }
    function get_increased()
        {   
            console.log(number);
            number += number;//we are using the number defined above but the number is added to itself - giving a doubling each time
        }
    </script>
    
    <script>
    var number=1;
    
    for (var k=0;k<5;k++) {
      get_increased();
      }
    function get_increased()
        {   
            console.log(number);
            number += 1;//this gives the result asked for
        }
    </script>