【问题标题】:Missing semicolon in JavaScript / JScriptJavaScript / JScript 中缺少分号
【发布时间】:2012-11-05 16:38:12
【问题描述】:

我在 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 文档脚本中甚至不需要它。

【问题讨论】:

  • 假设这与[java]没有任何关系。
  • 如果 (yMonth == 12) {..... ?
  • JScript 和 JavaScript 都是 ECMAScript 的实现。您可以假设它们是相同的。
  • 我对JS不太了解,但是else (yMonth == 12)应该是else if (yMonth == 12)吗?
  • DoWhileAlertNew 应该是 dowhile 等。JavaScript 区分大小写。

标签: javascript hyperion brio


【解决方案1】:
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 课程\教程,它并不难学,但你当前状态下的代码完全被破坏了!

【讨论】:

  • 感谢这个问题,但是,它并不能解决我发布的问题。
  • @ScottHoltzman。然后你的代码中还有其他错误。您遇到的新错误是什么?
  • stopIt 后的分号 = "Yes"
  • 修复了If Then Else If 声明!谢谢。 @Teemu 的评论修复了另一行。这是区分大小写的事情。
  • @ScottHoltzman,来自我的提示:1)使用JSlint。 2)编写少量代码并检查它是否有效,然后继续进行下一小部分再次测试......直到完成。
【解决方案2】:

为了清楚起见,我的问题的答案是双重的,基于 gdoron 非常有帮助和信息丰富的答案和 Teemu 在我原来的帖子下的评论。总结一下答案,我在下面回答了我自己的问题:

此语句中的错误

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

else 之后缺少if

所以它应该是这样的:

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)

【讨论】:

  • 但还有更多... :) 有很多大小写错误。
  • 啊!我现在看到了。正如你所说,我正在通过 sn-p 进行 sn-p :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
相关资源
最近更新 更多