2016-06-30 7 views
1

は、私は次のようなものがあります。のjavascript:期待trueまたはfalseが、取得数

var val = "string"; 
var testVal = val && val.length; 

を私はtestValtrueまたはfalseのいずれかであることを期待するが、それは文字列の長さです。なぜこれがわからないのですか?

+0

最初に私はdownvoteするつもりだったが、その後私はあなたが他の方法で回避番号を取得する代わりに、真、偽とされませんでした実現。 – Goose

+0

@ Juhanaオブジェクトを返す論理演算子に固有のものであり、この問題のある人の将来の検索では出現しないので、より一般的な重複がありますか? – Goose

+0

@Gooseその質問のリンクされた質問から1つを探すことができます。質問をした人はあまりにも良い答えを選んだが、[最も多くの票を得た答え](http://stackoverflow.com/a/8569966/502381)では一般的な問題を説明している。 – JJJ

答えて

1

論理&&演算子は型キャストを実行しません。それが形成する式は、このオペランドが誤っている場合は左のオペランドに、それ以外の場合は右のオペランドに評価されます。

あなたが明示的にブール値に変換する必要があります。

var testVal = !!(val && val.length); 
関連する問題