2016-04-27 11 views
3

真実と偽善(http://adripofjavascript.com/blog/drips/truthy-and-falsy-values-in-javascript.html)の多く、特にJavaScriptの '=='と '==='の違いをよく読んでいます。主に、このスタックオーバーフローの質問から最高の説明や資源:フォーム処理のために隠しフィールドにブール値を格納する

$('[name="fieldName"]').val(true);

Which equals operator (== vs ===) should be used in JavaScript comparisons?

私は、フォームに取り組んでいますが、次のjQueryの構文を使用して隠しフィールドにブール値を格納する必要があります

したがって、trueまたはfalseのブール値を非表示フィールドに挿入しています。スクリーン処理の間に、私は次のコードでif文の数は、このフィールドの値を取得し、次のようにそれを比較:私はと比較する===演算子を使用していますか

$('[name="fieldName"]').val() === "true"

注意を文字列値「true」

私の質問; JavaScriptのObjectだけがreference型である場合、booleanは値型でなければなりません。私はしたがって、===演算子との値の比較は、上記の式がfalseを返すはずのコンテンツだけでなく型を比較す​​ると仮定します。しかし、私のコードではそれは真実を返します - なぜ誰がこれを説明することができますか?

このコードは以前は==を比較に使用していましたが、可能な限り、私が実装している偽のリスクを避けるためです。それは私の値を変換するjQueryと関係がありますか?

+0

比較するコード内の$ jは何ですか? –

+0

タイプミス! @smailiに感謝します。 – coderwurst

答えて

2

私の値を変換するjQueryとは何か関係ありますか?

HTMLフォーム要素は、実際の内容が何であるかにかかわらず、常に値を文字列として格納します。あなたのケースではbooleanですが、numberタイプであっても、10.5ではなく「10.5」と表示されます。

あなたが本当にブールするブール値を比較したい場合は、私が何をお勧めしますは、次のとおりです。

Boolean($j('[name="fieldName"]').val()) === true 
+0

! – coderwurst

関連する問題