javascript - SyntaxError 如果在函数中,则为意外标记
问题描述
我目前正在学习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>";
});
}
解决方案
就像你可以把苹果放在篮子里但不能把篮子放在苹果里一样,你可以把表达式放在语句中,但不能把语句放在表达式中。
var colour = ...
是一个期望等号右侧的表达式的语句。你不能在if
那里发表声明。您可以使用条件运算符来制作条件表达式:
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]
,而不是比较它。
推荐阅读
- python - 为什么(Kivy)下拉菜单不显示?
- c++ - 使用 cmake 将 boost 链接到 c++:命令行编译
- jpa - entityManager.merge(object) 仅保留列表中的最后一条记录
- android - Android 位图到每个像素转换的字节数组
- sql - 事务日志已满
- php - 使用 Eloquent 插入和更新基于多行的外键的最佳方法是什么?
- biztalk - Biztalk 映射循环
- sql - 每次到店购买超过 3 张不同 CD 的客户数量
- react-native - 使用 Apollo 时如何设置 navigationOptions?
- php - 不使用 intdiv() 的整数(64 位)除法(php7 之前)