Js提示:“;期望一个赋值或函数调用,而看到一个表达式“;,Switch语句
JsHint: "Expected an assignment or function call and instead saw an expression", Switch statement
考虑此代码和输出:
var f = function(x){
switch(x){
case 1:
3 + 2 > 3 && (console.log("case 1"));
break;
case 2:
4 + 2 < 20 && (console.log("case 2"));
break;
case 3:
true && console.log("case 3");
break;
case 4:
false && console.log("case 4");
}
};
for(var i = 0; i < 6; i++){
f(i)
}
输出:
case 1
case 2
case 3
我收到JsHint的投诉说
"Expected an assignment or function call and instead saw an expression"
对于第4、7、10和13行。这是针对包含"&&"的每一行。我通过使用Switch语句中的函数来避免这种情况,例如:
case1:
function a() {3 + 2 > 3 && (console.log("case 1"))}
a()
break;
等等。
我想知道JsHint为什么发出这个警告,以及是否有更好的方法来解决警告问题?
请记住,JSHint只是关于"好"代码的一组意见的体现。在这里,它本质上是在告诉您,它不赞成您使用&&
运算符进行控制流。你可能会通过切换到一个简单的if
语句来让它高兴起来:
case 1:
if (3 + 2 > 3) console.log("case 1");
break;
因此:
switch(x){
case 1:
3 + 2 > 3 && (console.log("case 1"));
break;
case 4:
false && console.log("case 4");
}
相当于:
if (x == 1){
3 + 2 > 3 && (console.log("case 1"));
} else if (x == 4) {
false && console.log("case 4");
}
正如您可能看到的,简单地使用逻辑条件通常是没有意义的。你通常想做一些实际的事情,例如任务或职能。JSHint警告您可能会犯错误。
相关文章:
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 正则表达式搜索一个空格,后跟一个字符
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 使用一个表达式将两个变量分配给相同的值
- 在一个表达式中加载并使用ES6模块
- 解析一个复杂的JavaScript表达式,将其改写为另一种格式
- 包含一个集合的1到3个成员但其中一个成员不能单独存在的正则表达式
- 如何使用 JavaScript 正则表达式搜索除一个实例之外的所有内容
- 匹配三个正则表达式中的任意一个,以先到的为准(在javascript中)
- Js提示:“;期望一个赋值或函数调用,而看到一个表达式“;,Switch语句
- 有人能解释一下这个错误吗:期望一个赋值或函数调用,却看到了一个表达式
- JSHint错误:期望一个赋值或函数调用,却看到一个表达式
- 期望一个赋值或函数,却看到了一个表达式
- 在Typescript中传递一个表达式作为过滤器函数的参数
- 数据库中的列表函数得到一个表达式不会计算为函数错误
- JShint:期望一个赋值或函数调用,却看到了一个表达式
- Angular Js将一个固定的ng类和同一标记中的一个表达式组合在一起
- JavaScript:应为和赋值或函数调用,但却看到了一个表达式
- 你能在NG-MODEL中使用一个表达式吗