为什么我从多个 "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;}
我的脚本知识仅限于某些旧语言,例如 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
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;}