23

アプリケーションでいくつかのコードを実行して JavaScript を学習しようとしていますが!variable、if 条件を確認し続けています。例えば:

if (!variable.onsubmit || (variable.onsubmit() != false)) {

それは何ですか?変数が空であるかどうかの何らかのテストはありますか?

4

4 に答える 4

52

!JavaScriptの論理否定演算子です。

正式に

!expression次のように読みます。

  • 取っexpressionて評価します。あなたの場合、それはvariable.onsubmit
  • その評価の結果をケースに入れ、ブール値に変換します。あなたの場合onsubmit、関数である可能性が高いため、関数がnullまたは未定義の場合はfalseを返し、そうでない場合はtrueを返します。
  • その評価が true の場合、false を返します。それ以外の場合は true を返します。

あなたの場合

あなたの場合!variable.onsubmit、関数が定義されていない(したがって偽である)場合は true を返し、そうでない場合は false を返します(関数が定義されているため)。

簡単に言えば -!variableの真値を取り、variableそれを否定することを意味します。

したがって、変数が(または強制的に false)である場合if (!variable) {に節に入ります。iffalse

合計で

if (!variable.onsubmit || (variable.onsubmit() != false)) {

手段 -variable.onsubmitが定義されていて真である (つまり真である) かどうかを確認し、次に、呼び出しonsubmitが強制的に真になる結果を返すかどうかを確認します。短い行で、存在しないonsubmitか true を返すかどうかをチェックします。

次回は、これを自分で見つけるにはどうすればよいでしょうか。

于 2013-10-21T10:04:31.997 に答える
6

これは、変数の真偽テストに使用される否定演算子です。

var myVariable = 1;

if ( ! myVariable )
{
    // myVariable evaluates as false
}

if ( myVariable )
{
    // myVariable evaluates as true
}
于 2013-10-21T10:06:14.317 に答える
1

選択した回答は、すでに質問に回答しています。これに追加することの 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)。これもほとんどの場合必要ありませんが、追加のセキュリティを確保できます。

于 2018-08-20T06:05:44.533 に答える