【发布时间】:2017-10-25 03:39:26
【问题描述】:
仅当变量不是有效字符串(长度 > 0,且未定义)时,我才尝试运行代码块。基于this SO post,我认为我做得对,但每次都会运行。我在这里做错了什么?
if (creep.memory.sourceid ||creep.memory.depositLoc||creep.memory.sourceType)
{
creep.memory.sourceid = getSourceMinWorkers(creep);
creep.memory.sourceType='energy';
creep.memory.depositLoc=getClosestDepositLoc(creep.memory.sourceid,creep.memory.sourceType);
console.log(creep.name," harvesting ",creep.memory.sourceType," at: ",creep.memory.sourceid," depositing at: ",creep.memory.depositLoc);
}
console.log 的输出:
H1_1 harvesting energy at: 81a61f68f5eb4057223b05b2 depositing at: a7633d25d9058f616ab8a0f3
H1_1 harvesting energy at: 1649baad43f736c9fc13d2ad depositing at: a7633d25d9058f616ab8a0f3
【问题讨论】:
-
您是否尝试在进入
if块后立即退出creep.memory.sourceid等?至少其中一个值必须为真(不是false、undefined、null或空字符串)。你可以easily verify this for yourself. -
您可以创建一个更简单的示例来深入了解这一点。您的特定游戏代码对任务并不重要。
-
@sheriffderek 他们的代码对我来说似乎很简单。他们缺少的是关于这三个值真正是什么的信息。
-
我只是认为最好的结果 - 简化的东西是最好的 - 也适用于未来的其他人 - 像这样:jsfiddle.net/sheriffderek/d31mj4Lu - 另外,我们没有关于这个的上下文正在发生在一个函数中。
-
@sheriffderek 更简单可能更好,但他们的代码绝对足够简单。它发生在哪里并不重要。这是每个属性包含什么值以及使用哪些布尔运算符的问题。
标签: javascript screeps