javascript - && 用于 null 安全方法调用,好还是坏?

标签 javascript jslint

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

result = value ? value : defaultValue;

result = value || defaultValue;

我认为这是一个很好的捷径,并尝试将原理应用于对可能为 null 的变量的方法调用,所以不是:

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

我试过:

arg && arg.doSomething();

后者在浏览器中运行良好,但 jslint 提示“期望一个赋值或函数调用,而不是看到一个表达式。”

最后的陈述是不好的、错误的、危险的,还是 jslint 过度保护?使用 var dummy = arg && arg.doSomething(); 让消息消失似乎很愚蠢。

最佳答案

JSLint 最多应该将此视为警告(但是,JSLint 不会将警告与完全错误区分开来),绝对不是错误——但请记住,JSLint 是关于执行 Crockford 的编码风格标准,这可能与您的不同(它们肯定与我的不同);你可以看看 JSHint它提供了更多控制,但我没有立即看到针对这种特定情况的选项。

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

关于javascript - && 用于 null 安全方法调用,好还是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7739149/

相关文章:

javascript - JSLint 提示重新定义未定义

javascript - AngularJS 推送不起作用

javascript - d3 - map 上文本的位置

javascript - JSLint 提示数学运算符 "++"语法

javascript - 我可以把这个评论放在哪里? JSLint 提示放置

javascript - jslint clickHandler 在定义/已经定义之前被使用

javascript - attributeContains 选择器中的表达式无法识别

javascript - 将 javascript 变量传递给 XML 主体 node.js

JavaScript - 如何在 .js 文件之间传递全局变量?

javascript - `new Object()` 和对象字面量表示法有什么区别?