为什么我从多个 "if" 语句中得到一个 "Invalid assignment left-hand side" 错误?

Why do I get an "Invalid assignment left-hand side" error from multiple "if" statements?

我的脚本知识仅限于某些旧语言,例如 VBA-Excel。 在尝试将 VBA-Excel 脚本转换为 Google Apps 脚本时,为什么以下内容会给我一个 “左侧赋值无效” 错误?似乎我不能继续有条件地替换脚本运行的同一个变量,它运行大约 1500 行,并根据各种检查条件多次替换许多变量。最后,最后的条件状态作为输出返回。如果我不能随着脚本的进行有条件地更改变量,它真的会破坏我的整个转换希望:

var Elevation = activeSheet.getRange(7,2).getValue();
var Desert = activeSheet.getRange(8,2).getValue();
var Highlands_mod = 0;

if (Elevation == "High Mountains") {Highlands_mod = -20;}
if (Elevation == "Highlands" && Desert = "No") {Highlands_mod = -10;}
if (Elevation == "Highlands" && Desert = "Yes") {Highlands_mod = 10;}
if (Elevation == "High Mountains") {Elevation = "Highlands";}

我已经尝试了各种不同的格式。一旦我有第二组条件试图 modify/replace 相同的变量,就会发生错误,例如在前 3 个“if”语句中的任何一个之间。我还想知道第一个和第四个“if”语句是否会按预期顺序解析并导致错误。

我正在尝试进行一个可能很容易的转换(我希望如此),而无需花费数周时间学习一门新语言,所以我很感激任何见解。

你有一个等于你正在检查沙漠的地方。

解释:

let x = 10; // 用值 10

初始化 x

if (x == 10) {} // 检查 x 的值是否为 10

if (x === 10) {} // 这将检查 x 的值和类型是否 x 是一个数字并且它的值等于 10

它应该是双倍等于而不是一个:

var Elevation = activeSheet.getRange(7,2).getValue();
var Desert = activeSheet.getRange(8,2).getValue();
var Highlands_mod = 0;


if (Elevation == "High Mountains") {
  Highlands_mod = -20;
}
if (Elevation == "Highlands" && Desert == "No") {
  Highlands_mod = -10;
}
if (Elevation == "Highlands" && Desert == "Yes") {
  Highlands_mod = 10;
}
if (Elevation == "High Mountains") {
  Elevation = "Highlands";
}

您正在使用 = 而不是 =====:

if (Elevation == "Highlands" && Desert = "No") {Highlands_mod = -10;}

记住:=赋值,=====比较两个值。

将您的代码更改为:

 if (Elevation == "Highlands" && Desert == "No") {Highlands_mod = -10;}