これにより、配列が空かどうかを迅速に 判定できることがわかりますが、原理にはいくつかの疑問があります。
既知:
1. 等価演算子「==」: 最初に変換してから比較します。オペランドの 1 つがブール値の場合、等しいかどうかを比較する前に数値に変換されます。False は 0 に、True は 1 に変換されます。
2. 一方のオペランドがオブジェクトで、もう一方のオペランドがオブジェクトではない場合は、オブジェクトの valueOf() メソッドを呼び出し、取得した基本型の値を変換に使用します。
したがって、[]==fasle の右側は 0 に変換されます。左側はどうでしょうか?どのように変換されるのでしょうか?
これは JavaScript の比較表です: 関係演算子と等価演算子
http://tech.youzan.com/javasc...
読めば分かります
ブール値に変換して比較するため、
[]==false
=>
true == false //false
まず数値 0 に変換してから比較します。
配列が空であると判断するにはこのメソッドを使用するのが合理的ですよね?
リーリー弾まないと思っていたら、弾いてしまいました。ほとんどの場合、やはり長さで判断されます。もちろん、要素の数を判断する際には、長さも落とし穴になります。
jsの内部機構としては空の配列はfalseなのでfalse==falseはtrueとしか言えません!次に、空ではない配列は当然 true に変換され、true==false は true ではありません。何かわかりにくいことはありますか?