以下のステートメントに違いはありますか?
if(newValue && newValue != '')
とif(newValue != '')
私は多くのスクリプトで式1を観察しましたが、常に混乱していました。
手伝ってください!
以下のステートメントに違いはありますか?
if(newValue && newValue != '')
とif(newValue != '')
私は多くのスクリプトで式1を観察しましたが、常に混乱していました。
手伝ってください!
if(newValue && newValue!='')。
null
これは、またはの値から保護しますundefined
。
可能な、、、、およびのうち''
、0
最後のfalse
2つだけが(を使用して)等しくないため、追加の条件が必要です。undefined
null
''
!=
console.log(null && null != '') // null -> falsy
console.log(null != '') // truthy
var undef = void 0;
console.log(undef && undef != '') // undefined -> falsy
console.log(undef != '') // truthy
答えはノーです。
1) の場合(newValue && newValue != '')
、newValue が存在するかどうか (偽でない値) と空でないかどうかをチェックします
2) の場合if(newValue != '')
、newValue が空でないかどうかのみをチェックします。
すでに投稿された回答に追加する価値があると思ったもう1つの薄い.
あなた、OP が言うように: あなたは既存のコードで最初の式を何度も見たことがあるので、おそらく次のようなものを見たことがあるでしょう:
if (foo && foo.bar)
{
foo.bar();
}
この場合、これは特定のブラウザでのエラーを回避するためです。最近のほとんどのブラウザーでは、次のようなものにアクセスしlocalStorage.doesNotExist
てもエラーは発生しませんが、すべてのブラウザーがこれをサポートしているわけではないため、最初にlocalStorage
オブジェクトが存在するかどうかを確認し、存在する場合は、プロパティを偽でない値に解決できるかどうかを確認します。
オブジェクトのメソッドにも同じロジックが適用されますが、ブラウザによって異なる場合があります。
var domElement = document.getElementById('foobar');//might not exist, though
if (domElement && domElement.addEventListener)
{//does element exist && does it have a method called addEventListener
domElement.addEventListener('click', functionRef, false);
}
else if (domElement && domElement.attachEvent)
{
domElement.attachEvent('onclick', functionRef);
}
if ステートメントの最初を省略してdomElement
単に と書くdomElement.addEventListener
と、 TypeErrorをスローする書き込みと同じになる可能性があります (プリミティブ値のプロパティにアクセスしようとしているため)。null.addEventListener