刚开始使用 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/