【问题标题】:SyntaxError Unexpected token if within a functionSyntaxError 如果在函数中,则为意外标记
【发布时间】:2020-03-18 09:48:42
【问题描述】:

我目前正在学习 javascript(目前正在使用 Google Script),我觉得这是一个简单的错误,但我想不出办法。

如果我将“var colour”设置为颜色代码,则以下代码有效。但是,当我将其更改为 if 语句时,我遇到了问题。我尝试了很多不同的格式,但仍然遇到同样的问题......

它只是从电子表格中获取几行信息,然后格式化选定的行并将其显示给用户。

//Example of part of working code:
  if(Line.length == 0){
  var Line = lines 
  .slice(1)
  .filter(function(row) { return row[4] == e.message.text;})
  .map(function(row) {
    var colour = if(row[6]=1){return "#ff0000"};
    return '<b>' + row[3] + '</b> ('+ row[1] + ' or ' +row[2] + ')' + '\n' + '<font color=' + colour + '>Region: ' + row[6] + "</font>";
  });
  } 

【问题讨论】:

  • 如果您不提供发生错误的代码,我们无法告诉您为什么会发生错误。这就像去看医生,说“我的右腿很痛;这是我健康的左腿的 X 光片,你可以看到它应该是什么样子。” :) 如果您只是在注释所在的位置插入了 if,请将其移至新行,或在 "#000000" 之后添加分号。
  • 我的意思是,如果您将“#000000”替换为注释(不带//),则会出现错误。我现在已经更改了我写的内容,以便更清楚地了解有错误的代码......
  • 看,我不知道这就是你的意思。我什至不会想到它。这就是为什么查看发生错误的代码很重要的原因。 :) 感谢您的编辑。
  • var colour = if(row[6]=1){return "#ff0000"}; var 需要右侧的表达式,不允许使用语句。
  • 你不能在这个地方使用if。如果您希望它内联,则使用条件运算符? : 或转换为正确的if 并在块中分配值。还要注意row[6]=1is assignment, not comparison

标签: javascript if-statement google-apps-script unexpected-token


【解决方案1】:

statementsexpressions 之间存在差异。

就像你可以把苹果放在篮子里但不能把篮子放在苹果里一样,你可以把表达式放在语句中,但不能把语句放在表达式中。

var colour = ... 是一个需要等号右侧的表达式的语句。您不能在那里放置if 声明。您可以使用conditional operator 来制作条件表达式:

var colour = row[6] == 1 ? "#ff0000" : "#000000";

或者您可以使用完整的if 语句来执行两个变体赋值语句:

var colour;
if (row[6] == 1) {
  colour = "#ff0000";
} else {
  colour = "#000000";
}

还请注意,return #ff0000 将返回字面意义上的"#ff0000",而不是我假设您想要的颜色为#ff0000 的文本;另请注意,row[6] = 1 会将1分配row[6],而不是比较它。

【讨论】:

  • 非常感谢!区别现在对我来说很明显,我从来没有像这样向我解释过。干杯!
猜你喜欢
  • 2020-12-03
  • 2019-11-14
  • 2020-09-28
  • 2018-08-02
  • 2020-10-03
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
相关资源
最近更新 更多