Отсутствует точка с запятой в JavaScript / JScript

У меня есть следующий код, который я пишу в BRIO (Hyperion Interactive Reporting Studio). Код написан на JavaScript или JScript, хотя я не уверен, что, поскольку я только изучаю синтаксис, и не уверен, как они отличаются.

Во всяком случае, я получаю синтаксис Script(line number) missing; before statement ошибка в следующих строках:

if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else (yMonth == 12) {stopIt = "Yes"}

а также

var myDate = New Date(xYear, yMonth, 1)

в коде ниже.

var xYear
var yMonth

for (j = 2009; j =  2012; j++)

{ 

    xYear = j

    if (xYear == 2009) {yMonth = 7} else {yMonth = 1}

    var StopIt = "No"

    Do 

    {
    var myDate = New Date(xYear, yMonth, 1)
    Alert (myDate)

    //var myQuery = ActiveDocument.Sections["qry_billing"]

    //myQuery.Limits["Accounting Year Month"].CustomValues.RemoveAll()
    //myQuery.Limits["Accounting Year Month"].CustomValues.Add(myDate)
    //myQuery.Limits["Accounting Year Month"].SelectedValues.Add(myDate)

    //myQuery.Process()

    //var Path = "W:\\Major Accounts\\Alliance Process\\AAA\\reference_files\\Results"
    //var File = "Results" + "_" + xYear + "_" +  yMonth+ " .txt"

    //ActiveDocument.Sections["Results"].Export(Path + "\\" + File,bqExportFormatText,true)

    yMonth = yMonth + 1

    if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else if (yMonth == 12) {stopIt = "Yes"}
    }

    While (stopIt != "Yes")

}

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему, так как я не понимаю, почему он спрашивает меня о ;, как я думал, это даже не было нужно в сценариях документов BRIO.

2 ответа

Решение
else (yMonth == 12)

Должно быть:

else if (yMonth == 12)

И когда вы сделаете отступ в коде правильно, легко заметить эту ошибку:

if (xYear == 2012 && yMonth == 10) {
    stopIt = "Yes"
} 
else (yMonth == 12) { // shoule be: else if (yMonth == 12) {
    stopIt = "Yes"
}

Примечания: JavaScript чувствителен к регистру, что означает

  • Do не do
  • так что для alert вместо Alert
  • new вместо New

Но точки с запятой не являются обязательными, вы можете использовать их или не использовать, как вы хотите.

Обновить:

Судя по полному коду, который ты выложил, чувак, в нем много странных вещей.

for (j = 2009; j =  2012; j++)

Должно быть что-то вроде:

for (var j = 2009; j <= 2012; j++)
...

Вы определяете переменную:

var StopIt = "No"

Но использовать stopIt вместо:

stopIt = "Yes"

Вам следует пройти курс \ руководство по javascript, его не так сложно выучить, но ваш код в его текущем состоянии полностью поврежден!

Для ясности, ответ на мой вопрос был двояким, основываясь на очень полезном и информативном ответе Гдорона и комментарии Теему под моим первоначальным постом. Подводя итог, я ответил на свой вопрос ниже:

Ошибка в этом утверждении

if (xYear == 2012 && yMonth == 10) {stopIt = "Yes"} else (yMonth == 12) {stopIt = "Yes"}

это то, что не хватало if после else

Так должно выглядеть так:

if (xYear == 2012 && yMonth == 10) {
    stopIt = "Yes"
}
else if (yMonth == 12) {
    stopIt = "Yes"
}

Ошибка в этом утверждении

var myDate = New Date(xYear, yMonth, 1)

это было New не должен был быть капитализирован. Так что это должно быть записано как:

var myDate = new Date(xYear, yMonth, 1)
Другие вопросы по тегам