Очень простые операторы if / else работают задом наперед - PullRequest
0 голосов
/ 24 февраля 2019

Я смотрел на это простое утверждение if / else в другом более крупном проекте, и я не могу понять, что я делаю неправильно.

Я вставил Logger.log () в оба оператора ifчтобы попытаться устранить проблему.

Когда я запускаю код, я получаю следующий журнал:

[19-02-24 08: 50: 05: 427 PST] var Campus =Baylor

[19-02-24 08: 50: 05: 428 PST] var TSTCCampus = TSTC

[19-02-24 08: 50: 05: 428 PST] если IS =оператор выполнен

[19-02-24 08: 50: 05: 428 PST] else NOT = выполнен

Две переменные явно НЕ равны, но выполняется if =, а else! =выполняет.

Что я делаю не так?

function myFunction() {

// call the Current Reults sheet and identify the Last Row of Responses
  var RawFormResponsesSheet = SpreadsheetApp.getActive().getSheetByName("Current Results");
  var CurrentSubmission = RawFormResponsesSheet.getLastRow(); // Retruns the Value of the Last Submission Row Number
  var Campus = RawFormResponsesSheet.getRange(CurrentSubmission,3).getValue();

// call the Email Data sheet and identify certain cell values
  var EmailDataSheet = SpreadsheetApp.getActive().getSheetByName("Email Data")
  var TSTCCampus = EmailDataSheet.getRange(3, 4).getValue();
  var BaylorCampus = EmailDataSheet.getRange(4, 4).getValue();

Logger.log("var Campus = " + Campus)
Logger.log("var TSTCCampus = " + TSTCCampus)

if (Campus = TSTCCampus){Logger.log ("if IS= statement executed")}
else {Logger.log ("else IS= executed")}

if (Campus != TSTCCampus){Logger.log ("if NOT= statement executed")}
else {Logger.log ("else NOT= executed")}

}

1 Ответ

0 голосов
/ 24 февраля 2019

Вам необходимо использовать == в качестве оператора сравнения.

Существует 3 = операторы / команды:

  • = используется для установки значения переменной
  • == оператор равенства, возвращает true, если элементы имеют одинаковое значение, выполняет преобразование типа
  • === оператор идентичности, аналогично ==, но без преобразования типа

Ниже объясняется, что такое преобразование типов.

"5" == "5" returns true
"5" ==  5  returns true
"5" === "5" returns true
"5" ===  5  returns false

somevar = 5 присваивает и возвращает 5, что является истинным значением, и, таким образом, if (x = 5) { всегда будет выполнять условное тело.Точно так же if (x = 0) { никогда не выполнит условное тело, потому что оно присваивает и возвращает 0, что неверно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...