function get_increased(number)
{
console.log(number)
number += number
}
第一次调用get_increated(1(\输出1|所需输出1
第二次调用get_increated(1(\输出1|所需输出2
第三次调用get_increated(1(\outputs 1|所需输出3等等…
Condition:在声明函数时,不设置函数外的任何变量。
您需要在函数之外设置一个变量来保存新值。另外,您需要一个不同的变量作为增量值传递。
number = 0;
function get_increased(inc) {
number += inc
}
get_increased(1);
console.log(number);
get_increased(1);
console.log(number);
正如@VLAZ所说,保持数字的唯一方法是为其分配一个变量。这不是最佳实践,但我在窗口全局变量中分配了结果。
function get_increased(number) {
console.log('number: ', number)
window._number = window._number ? window._number + number : number
return window._number
}
console.log(get_increased(1))
console.log(get_increased(2))
console.log(get_increased(3))
为了做到这一点,您需要将值保存在其他地方。典型的图案是这样的:
function tally (startingNumber) {
console.log(startingNumber);
return function (number) {
startingNumber += number;
console.log(startingNumber);
}
}
var tally1 = tally(1);
tally1(1);
tally1(1);
tally1(1);
var tally2 = tally(3);
tally2(1);
tally2(2);
tally2(3);
"number"没有按预期递增。
给定的代码中有两个主要问题。请参阅下面更改的代码,了解3种不同的场景
- Javascript通过值而不是引用传递数字。因此,对get_increated的初始调用相当于get_increred(1((我假设您在下面的示例中从数字=1开始(。然后,函数使用一个名为number的变量,但它是该函数的局部变量,不是最初声明的var数字。它将其输出到控制台,然后将其自身的值增加(恰好为1(,但该版本的变量号不存在于运行get_increated的实例之外
增加一个称为number的变量,并使其保持到下一次调用get_increated,以及下一次和下一次。。。。我们可以在函数外声明它,并让函数使用它(获取它的值和更新它的值(,请参阅下面代码中的第二组脚本。
-
然而,即使我们使get_increated使用这个更持久的变量号,行
number+=数字
将数字的值添加到自身-每次都将值加倍,因此我们在控制台中看到1 2 4 8等。log要将值增加一,代码为
number +=1
其含义与相同
number = number + 1
以下是试用的3套脚本
<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>