Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

([] ==false)がtrueの場合、([] || true)が[]になるのはなぜですか? -JavaScript


問題の説明をよく見ると、([] ==false)と([] || true)の違いは次のとおりです-

最初のケースでは、緩い条件付きチェックを使用して、型強制が引き継ぐことができます。

2番目のケースでは、フックの下で型強制の代わりに関数Boolean()を使用するそれぞれのブール値(真または偽)に対して[]を評価しています。

どちらの場合も舞台裏で行われる変換を明らかにしましょう。

ケース1 −([] ==false)

MDN docsによると、2つのデータ型がxとyが緩い等式演算(==)を使用して比較されると言う場合、

ブール値は、Number()関数を使用して数値に変換されます-

したがって、条件は次のようになります-

[] == 0// Number(false) = 0

次に、オブジェクトタイプの変数がプリミティブ値に変換される場合-

"" == 0

そして最後に、空の文字列が数値に変換されます-

0 == 0

上記は最終的にtrueを返します

ケース2 −([] || true)

この場合、[]の真偽の値は、組み込みのBoolean()関数を使用してブール値に変換することによってチェックされます。そして、

Boolean([]) = true

したがって、真の値[]は保持されます。


  1. PreventDefault()vs JavaScriptでfalseを返しますか?

    PreventDefaultは、URLクリックなどでページをリダイレクトしないなどのイベントが発生したときに、デフォルトのブラウザの動作を停止します。 また、returnfalseは、イベントが発生したときにデフォルトのブラウザーの動作を停止し、イベントを伝播させません。コールバックの実行も停止され、呼び出されるとすぐに返されます。 以下は、PreventDefault()のコードであり、JavaScriptでfalseを返します- 例 <!DOCTYPE html> <html lang="en"> <head> <meta

  2. JavaScriptで誤った値を特定する

    JavaScriptでは、ブール型-false として評価されると、次の値がfalseと評価されます。 0 空の文字列: 、、または `` null 未定義 NaN —数値ではありません 以下は、JavaScriptで偽の値を識別するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt