【发布时间】:2013-09-12 13:51:00
【问题描述】:
我正在使用 JSLint 使我的(工作)代码更简洁。
这是一个有用的工具,但它根本不喜欢这个:
//...
switch (process.argv.length) {
default:
case 9:
LOG = process.argv[8];
case 8:
EMERGENCY = process.argv[7];
//...
break;
case 1:
case 0:
emergency('Error');
break;
}
JSLint 说:
Missing 'case'.
Expected '}' to match 'switch' and instead saw 'case'
Expected '9' at column 5, not column 10.
Expected ';' and instead saw ':'
Expected ':' at column 5, not column 11
Unexpected ':'
Stopping.
全部在“案例 9:”行
我将默认设置为第一,如果用户输入太多参数,则不会阻止应用程序。
我可以把它放在最后,把所有的传递都复制粘贴进去,但我不喜欢这个主意,或者把所有这些都放在嵌套的 if 中,但它会不可读。
有没有办法让 JSLint 接受这个?
编辑:
这里是处理旧版本中开关盒角色的代码(接受的参数较少:
if (process.argv.length>=3){
DOWNLOAD_DIR=PATH+process.argv[2];
if(process.argv.length>=4){
DOWNLOAD_ADD=process.argv[3];
if (process.argv.length>=5)
{
SMIL_ADD=process.argv[4];
if (process.argv.length>=6)
{
UPDATE_H=parseInt(process.argv[5],10);
if (process.argv.length>=7)
{
UPDATE_M=parseInt(process.argv[6],10);
}
}
}
}
}
如您所见,该开关比嵌套的 if 更具可读性,即使它让我以不寻常的方式使用默认值。
【问题讨论】:
-
JSLint 不喜欢,我也不喜欢。带有失败案例的
switch语句是所有反模式之母。
标签: javascript node.js jslint