Javascript |解析错误:意外令牌if

问题描述 投票:0回答:2

在阅读下面之前,请注意我最近才开始学习Javascript。

我有兴趣制作一个基于文本的生存游戏。当我试图从整体中减去一个随机数量的幸存者时,我试图写出我认为的结果,“如果数字是0.50 - 1.00就会发生突袭,如果突袭成功,该团队将失去一个随机数量的幸存者。 1,然而有许多幸存者。“但是,当我写这个时,我得到一个ESLint错误,说明:错误:解析错误:如果我不知道如何重写它,或者如何重新格式化工作,如果它完全可能,则会出现意外令牌。问题出现在下面的代码中,第10,11和12行。

//constants
var EVENT_CHANCE = 0.15;
var EVENT_TYPE = 0.50;
var FOOD_CONSUMPTION = FOOD_CONSUMPTION;
var MATERIALS_CONSUMPTION = 1;
var ENEMY_STRENGTH = 10;
var SURVIVOR_STRENGTH = 1;
//equations
this.FOOD_CONSUMPTION = (this.food - this.surviors);
this.raid = if ( EVENT_TYPE > 0.50);{
this.survivors - Math.floor((Math.random() * this.surviors) + 1);
};

如果我遗漏任何重要信息,请告诉我

注意:我从游戏开发堆栈交换中复制了这篇文章,因为他们告诉我它更像是一个堆栈溢出问题,因为它更多地与JS相关,而不是游戏开发。

javascript eslint
2个回答
0
投票

您不能将语句用作作业的右侧,这是您在此处尝试执行的操作:

this.raid = if ( EVENT_TYPE > 0.50);{
    this.survivors - Math.floor((Math.random() * this.surviors) + 1);
};

如果你想将this.raid设置为EVENT_TYPE > 0.50的结果,你可以直接这样做:

this.raid = EVENT_TYPE > 0.50;

如果你想在分支中使用它,你可以使用if测试this.raid

this.raid = EVENT_TYPE > 0.50;
if (this.raid) {
    this.survivors - Math.floor((Math.random() * this.survivors) + 1);
}

(我还修正了一个拼写错误,第二个survivors错过了一个v。但是仍然有一个问题我不知道如何解决:它计算一个值而不将它存储在任何地方。这不是JavaScript中的错误,但它可能不是你想要的。你可能意味着-=而不是-。)

请注意,最初在那个;if都不属于那里。你没有把;放在()之后加入if,并且你没有在流量控制声明(;if等)附带的块之后加上while


0
投票
  1. 在条件之后你有一个分号
  2. 要有条件地分配变量,您需要使用三元运算符,例如: const thing = condition ? ifTrue : ifFalse;

或者为您的代码:

this.raid = EVENT_TYPE > 0.50 ?
  this.survivors - Math.floor((Math.random() * this.surviors) + 1) :
  null;
//replace the null with what you want the variable to be if the condition is false
© www.soinside.com 2019 - 2024. All rights reserved.