アプリケーションでいくつかのコードを実行して JavaScript を学習しようとしていますが!variable
、if 条件を確認し続けています。例えば:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
それは何ですか?変数が空であるかどうかの何らかのテストはありますか?
アプリケーションでいくつかのコードを実行して JavaScript を学習しようとしていますが!variable
、if 条件を確認し続けています。例えば:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
それは何ですか?変数が空であるかどうかの何らかのテストはありますか?
!
JavaScriptの論理否定演算子です。
!expression
次のように読みます。
expression
て評価します。あなたの場合、それはvariable.onsubmit
onsubmit
、関数である可能性が高いため、関数がnullまたは未定義の場合はfalseを返し、そうでない場合はtrueを返します。あなたの場合!variable.onsubmit
、関数が定義されていない(したがって偽である)場合は true を返し、そうでない場合は false を返します(関数が定義されているため)。
簡単に言えば -!variable
の真値を取り、variable
それを否定することを意味します。
したがって、変数が(または強制的に false)である場合if (!variable) {
に節に入ります。if
false
if (!variable.onsubmit || (variable.onsubmit() != false)) {
手段 -variable.onsubmit
が定義されていて真である (つまり真である) かどうかを確認し、次に、呼び出しonsubmit
が強制的に真になる結果を返すかどうかを確認します。短い行で、存在しないonsubmit
か true を返すかどうかをチェックします。
これは、変数の真偽テストに使用される否定演算子です。
var myVariable = 1;
if ( ! myVariable )
{
// myVariable evaluates as false
}
if ( myVariable )
{
// myVariable evaluates as true
}
選択した回答は、すでに質問に回答しています。これに追加することの 1 つは、!
演算子をかなり興味深い方法で使用できることです。
obj = {}
if (!!obj) {console.log('works')} // !!obj = true
obj = undefined
if (!!obj) {console.log('does not work')} // !!obj = false
したがって、 doubleは例外なく !!
式を値に変更します。boolean
これには、場合によっては非常に特殊な使用例があります。
true または false のいずれかを返し、それ以外は何も返さない関数があるとします。その場合、特別な注意のために に変更return returnValue
することができreturn !!returnValue
ます (ただし、ほとんどの場合は必要ありません)。
逆に、関数が true または false のみを受け入れ、他には何も受け入れない場合、関数を as のfunctionA(!!parameter)
代わりに呼び出すことができますfunctionA(parameter)
。これもほとんどの場合必要ありませんが、追加のセキュリティを確保できます。