javascript - JavaScript "save"如何通过变量赋值?

标签 javascript

**已更新以添加计数和函数。

我的问题是,在输入返回表达式时执行方程,保存该值,这样如果再次调用该函数,它会保存以前的值并在其之上添加?我想有人可以在更高层次上详细说明这是为什么/如何吗?

(即:console.log ((cc(3)) = 1 Bet)); console.log (cc(2)) = 2 下注,而不是 1 下注(cc(3) 的计数已“保存”))

var count = 0;
function cc(card) {
  // Only change code below this line
if (card>=2 && card<=6) {
    count+= 1; 
} else if(card>=7 && card<=9) {

} else {
    count-=1;      
}

if (count>0) {
    return count + " Bet";
} else {
    return count + " Hold";
}

}

最佳答案

My question is that do equations when the return expression is put in, save that value so if that function is called again, it saves the previous value and adds on top of it?

没有。方程本身并不能保存任何东西。

在某个作用域内声明的变量会在一段时间内保留其值(取决于它们声明的作用域以及它们是否属于任何类型的闭包的一部分)。因此,引用变量的方程将始终使用该变量的最新值。修改稍后在方程中使用的变量的函数将使方程看到新的更新值。

编辑

既然您现在表明 card 是一个比您的 cc() 函数更高作用域的变量,我们现在可以解释 card从一次调用 cc() 到下一次调用,都会保留其值。

编辑结束

在您显示的代码中,只要代码运行,就会使用 card 的当前值。您没有显示该变量的声明位置或它的值是如何设置的,因此我们无法对此发表评论。当您的代码运行时,它将使用 card 变量的当前值。

同样,在您显示的代码中,将使用、更新并返回 count 的当前值。下次运行此代码时是否保留修改后的值完全取决于 count 的声明方式/位置。您需要向我们展示更多代码,包括声明 countcard 的位置以及在其他位置设置它们的值,以便我们进一步评论它们到底发生了什么。

函数的参数

如果你这样做:

function increment(item) {
    return ++item;
}

var cntr = 0;
console.log(increment(cntr));
console.log(increment(cntr));

您将得到如下所示的输出:

1
1

因为 cntr 的值从未改变,所以每次调用 increment() 时,您实际上都在执行 increment(0) 而没有执行任何操作曾经修改cntr的值,使其保持在0

将结果分配回原始变量

如果,另一方面,你这样做了:

function increment(item) {
    return ++item;
}

var cntr = 0;
cntr = increment(cntr);
console.log(cntr);
cntr = increment(cntr);
console.log(cntr);

然后,你会看到这个:

1
2

这是因为您将函数的返回值分配回 cntr,因此它的值每次都会更新。因此,第一次调用 increment() 时,您将执行 increment(0),而下一次调用 increment(1) 时,您将执行 increment(1) .

<小时/>

局部变量

函数内的局部变量仅在该函数的作用域内存在。所以,如果你这样做了:

function increment() {
    var val = 0;
    return ++val;
}

console.log(increment());
console.log(increment());

你会看到这个:

1
1

每次调用 increment() 都会创建一个新的局部变量 val 并将其初始化为 0。因此,每次调用 increment 时,它都会获取 0 的值并将其加一并返回,因此它始终返回 1 >.

<小时/>

更高范围的变量

但是,如果变量 val 处于更高的范围内:

var val = 0;

function increment() {
    return ++val;
}

console.log(increment());
console.log(increment());

然后,你会看到这个:

1
2

这是因为变量 val 处于更高的作用域,并且对 increment() 的两次调用都存在相同的 val 变量,因此它的值从一个调用传递到下一个调用。

关于javascript - JavaScript "save"如何通过变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236460/

相关文章:

javascript - 如何延迟作为 props 子级传递给另一个组件的 JSX 的评​​估?

javascript - 为什么 change() 仅在接收广播时调用?

javascript - AngularJS $http.get 无法与 Node.js RESTful 一起使用

javascript - 使用 Javascript 扩展背景

javascript - Angular:将逻辑写入绑定(bind)

javascript - react JS : Passing values when back button is clicked

javascript - 防止在 asp.net 中重新加载脚本

javascript - 如何在 Typescript 中导入自定义文件类型

javascript - 如何解析文本中的引号以在 Javascript 确认消息框中工作

javascript - jQuery .toggle 不适用于 CSS 交集