&安培;&安培;对于null安全方法调用,好还是坏?

时间:2011-10-12 11:11:21

标签: javascript jslint

刚开始使用jslint检查我的javascript代码。它表明我应该替换

result = value ? value : defaultValue;

result = value || defaultValue;

我认为这是一个很好的快捷方式,并尝试将该原则应用于可能为空的变量的方法调用,因此代替:

if (arg) {
    arg.doSomething();
}

我试过了:

arg && arg.doSomething();

后者在浏览器中工作正常,但是jslint抱怨“预期的赋值或函数调用,而是看到了一个表达式。”

最后一句话是坏的,错误的,危险的,还是jslint过度保护?使用var dummy = arg && arg.doSomething();确实让消息消失似乎很愚蠢。

1 个答案:

答案 0 :(得分:3)

JSLint应该充分考虑这个警告(但是,JSLint不会将警告与完全错误区分开来),绝对不是错误 - 但请记住,JSLint是关于强制执行Crockford的编码风格标准,这可能与您的不同(他们当然不同于我的);您可以查看JSHint哪个提供更多控制权,但我没有立即看到针对此特定情况的选项。

您的arg && arg.doSomething()很好,但要注意它有点先进,您会失去一些维护代码的人。我从不以这种方式使用它。我确实在表达式中使用它,但不是单独使用它。你是否使用它取决于你,但它并不危险,只是有些不透明。