私はこのトピックについて同僚と約 1 週間議論してきました。私はできる限り 3 進数などを使用して、簡略化されたコードのファンです。最近、彼は私の二重感嘆符の使用について私をからかっています. 多数のテストを実行した後、私は彼に同意し始めています...私のコードで二重の感嘆符を使用するのは賢明ではないかもしれません。このことを考慮:
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
上記の例は期待どおりに機能します。ただし、undefined を返す可能性のある変数をチェックすると、特に IE7 でエラーが発生します。ただし、これをコンソールで実行すると、期待どおりの結果が得られます。
if(randomvar) alert('Works');
このアプローチを使用すると、変数が未定義の場合、黙って失敗します。これは、二重の感嘆符の使用全体に疑問を投げかけます。実際にこのオペレーターが有利になる状況はありますか?