ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

JavaScriptの真偽値とJSON.stringify()でハマってワロタ

スポンサードリンク

http://www.flickr.com/photos/42182644@N00/4704268314
photo by Oльга + Haфaн



(`;ω;)ぐぬぬぬぬぬ・・・


めっちゃめんどくさかったお!!!


単純だったけど、ハマったのでメモ

JavaScriptの真偽値について


ざっくり学びましたが、下記ブログがわかりやすかった。



JavaScriptの真偽値判定について - 電脳徒然日記


JSON.stringify()について


Jsonを文字列へ変換してくれるメソッドです。ドキュメント的には「JavaScript のオブジェクト」から「JSON 文字列」に変換する」と記述があります。


JavaScriptプログラミング講座【JSON について】



Jsonに必要なエスケープ処理などもしてくれますので、便利です。


今回ハマったこと

JSON.stringify()についてですが、この関数に空文字を引数として渡すとと結果は'""'という文字列を返します。

// 通常JSONの値を入れると・・・
JSON.stringify('{ "data" : "hoge" }'); // ""{ \"data\" : \"hoge\" }""

// 空文字かな?
> JSON.stringify(''); // ""


勘違いしてしまったことは、空文字を入れてしまったときに返される文字列を"空文字"と思い込んでいたのだ!!! (´;ω;)

// ?????(´?ω?)
> ! JSON.stringify(''); // false

// ?????(´?ω?)
> JSON.stringify('') == ''; // false

// がぁああああああああ!!!???
> JSON.stringify('') == '""' // true


空文字ではなかった。文字列'""'を返してくるので、ダブルクォーテーション2つと比較するとtrueになる。


いや〜、半日つかったわorz


JavaScriptって、結構広い、、、今後注意しよう(´;ω;)