【发布时间】:2023-11-22 11:58:02
【问题描述】:
刚开始使用 jslint 来检查我的 javascript 代码。它表明我应该更换
result = value ? value : defaultValue;
与
result = value || defaultValue;
我认为这是一个不错的捷径,并尝试将该原理应用于对可能为 null 的变量的方法调用,而不是:
if (arg) {
arg.doSomething();
}
我试过了:
arg && arg.doSomething();
后者在浏览器中运行良好,但 jslint 抱怨“期望一个赋值或函数调用,而是看到一个表达式。”
最后一个语句是坏的、错误的、危险的,还是 jslint 保护过度?使用var dummy = arg && arg.doSomething(); 确实让消息消失似乎很愚蠢。
【问题讨论】:
-
我认为 Crockford 称
&&为“守卫”,并鼓励像您的示例一样使用它。也许他不使用 jslint? -
@RobG:他可能只在表达式中使用了守卫。 :)
-
肯定没有错;这也是 Closure Compiler 在缩小时所做的事情:closure-compiler.appspot.com/home。 (尝试缩小您的
if子句。) -
@RobG:Douglas Crockford 不使用 JSLint,Douglas Crockford 是 JSLint。向查克·诺里斯道歉 :-)
标签: javascript jslint