【问题标题】:Function won't remember variable函数不会记住变量
【发布时间】:2016-01-16 10:18:43
【问题描述】:

我想使用 javascript 创建记分牌。我创建了一个全局变量NaN。我还创建了一个带有if 语句的函数。如果变量是NaN,那么变量需要为0。然后变量将得到+1。当我单击按钮运行该函数时,结果为 1。但是当我重新单击该按钮并重新运行该函数时,它保持为 1 并且不添加 +1。谁能告诉我我做错了什么?

var score = score; //creates a global variable
function addscore(score) {
    alert(score); // just for me to see what value the variable has
    if ((score) = isNaN) {
        var score = 0; // the variable will be a number
    }
    score++;
    alert(score);
}

【问题讨论】:

  • var score = score; //creates a global variable --- o_O
  • var score = score 情节扭曲:这不会创建全局变量。

标签: javascript function variables global-variables var


【解决方案1】:

通过将score 作为函数的参数,您声明了一个局部变量。您的函数对这个局部变量而不是全局变量进行操作,因此每次调用它时都必须为其传递一个值。

只需从函数声明中删除score

function addscore() {

另外,这行没有意义:

var score = score;

您不能将score 设置为score,因为score 还不存在!做吧:

var score = 0;

if ((score) = NaN) { 将为得分分配一个值。您想检查这些值,例如 if (isNaN(score)) {

【讨论】:

  • 我也改变了 var score = 0;得分 = 0;在 if 语句中,这使函数工作。
  • @gloo 是的,我错过了那个。很高兴它有帮助!
  • 但在 JavaScript 中,NaN !== NaN。您需要使用全局 isNaN() 函数来检查 NaN。
  • @simonlchilds 你完全正确。在我的手机上写了这个答案,并没有想清楚。已编辑。
【解决方案2】:

function addscore 是你痛苦的原因。您在其中添加了变量score,if 条件将引用该变量而不是全局变量。去掉它。您的函数定义应如下所示

function addscore() {
....
....
}

为了比较您的 if 条件,请使用 == 而不是 =,后者用于分配。

换行

var score = score; //creates a global variable

类似

var score = 0; //creates a global variable

因为分数还不存在。

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 2022-11-17
    • 2013-05-27
    • 2021-09-10
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多