ホームページ  >  に質問  >  本文

javascript - [配列が空かどうかをすばやく判断する] []==false なぜ true が返されるのでしょうか?

リーリー

これにより、配列が空かどうかを迅速に 判定できることがわかりますが、原理にはいくつかの疑問があります。
既知:

1. 等価演算子「==」: 最初に変換してから比較します。オペランドの 1 つがブール値の場合、等しいかどうかを比較する前に数値に変換されます。False は 0 に、True は 1 に変換されます。

2. 一方のオペランドがオブジェクトで、もう一方のオペランドがオブジェクトではない場合は、オブジェクトの valueOf() メソッドを呼び出し、取得した基本型の値を変換に使用します。

したがって、[]==fasle の右側は 0 に変換されます。左側はどうでしょうか?どのように変換されるのでしょうか?

習慣沉默習慣沉默2662日前1244

全員に返信(6)返信します

  • 黄舟

    黄舟2017-07-05 10:53:52

    これは JavaScript の比較表です: 関係演算子と等価演算子

    返事
    0
  • typecho

    typecho2017-07-05 10:53:52

    http://tech.youzan.com/javasc...
    読めば分かります

    返事
    0
  • 大家讲道理

    大家讲道理2017-07-05 10:53:52

    ブール値に変換して比較するため、
    []==false
    =>
    true == false //false

    返事
    0
  • 怪我咯

    怪我咯2017-07-05 10:53:52

    まず数値 0 に変換してから比較します。

    返事
    0
  • 世界只因有你

    世界只因有你2017-07-05 10:53:52

    配列が空であると判断するにはこのメソッドを使用するのが合理的ですよね?

    リーリー

    弾まないと思っていたら、弾いてしまいました。ほとんどの場合、やはり長さで判断されます。もちろん、要素の数を判断する際には、長さも落とし穴になります。

    返事
    0
  • 滿天的星座

    滿天的星座2017-07-05 10:53:52

    jsの内部機構としては空の配列はfalseなのでfalse==falseはtrueとしか言えません!次に、空ではない配列は当然 true に変換され、true==false は true ではありません。何かわかりにくいことはありますか?

    返事
    0
  • キャンセル返事