jslintを使用してJavaScriptコードを確認し始めました。それは私が、私はこれはいいショートカットを思った&null安全なメソッド呼び出し、良いか悪い?
result = value || defaultValue;
で
result = value ? value : defaultValue;
を交換しなければならない、そして潜在的にヌルの変数を上のメソッド呼び出しに原理を応用してみましたので、代わりに示されている:
if (arg) {
arg.doSomething();
}
私は試しました:
arg && arg.doSomething();
後者はブラウザで正常に動作しますが、jslintは「代入や関数呼び出しが必要で、代わりに式を見た」と不平を言っています。
最後のステートメントが悪い、間違っている、危険な、またはjslintが過剰保護されていますか? var dummy = arg && arg.doSomething();
を使用すると、メッセージが消えてしまうだけで愚かに見えます。
私はCrockfordが「ガード」と呼ばれると思って、あなたの例のようにその使用を奨励しました。たぶん彼はjslintを使わないだろうか? – RobG
@RobG:おそらく彼は表現の中でガードを使うだけです。 :) –
それは間違いではありません。これはClosure Compilerがhttp://closure-compiler.appspot.com/homeを縮小するときにも実行します。 (if節を小さくしてみてください。) – pimvdb