hoge=”true”を受け取る時

JSON から hoge=”true” という値を受け取った時、ActionScript 上で条件分岐させるケースで

  1. if(hoge==true) はダメ(false)
  2. if(hoge==”true”) は OK (true)
  3. if(hoge) は OK (true)これやるとヤバい

ってのにちょっとつまづきました。(ストリング扱いなのに3の boolean 判定が通るとこが。)

追記:
コメント戴きました通り、3の if(hoge) は hoge になんらかの文字列が代入されてさえいれば、たとえ hoge=”false” でも true 判定になるので3みたいなことはやらないこと。
いやはや、まだこんなことでつまづくかw。

おまけ:hoge=0;の時 if(hoge) は false 評価するってのもありましたね。ついうっかりハマってしまうことがあるのは、まだまだコードを書き足りていないせいですね。

このエントリーをはてなブックマークに追加
はてなブックマーク - hoge=”true”を受け取る時

Comments:3

むらけん 09-04-09 (木) 21:01

Stringの強制Boolean変換は、””がfalseで、その他はtrueが返るので、if(“true”)はtrueになってるです。別にif(“t”)でもtrueです。

kaede 09-04-09 (木) 22:25

はじめまして。
むらけんさんも仰られているとおり、3はBooleanに変換する仮定でAS3は””以外のStringは全てtrueになります。
AS3は0や1を判断してBooleanに変換できますが、Stringを読み取ってture,falseを判断する術をネイティブに持ち合わせていないようです。(なんでないんだろう・・・。あったらスイマセン。)
ここは逆に考えて、true.toString() == hogeのように、Boolean側をStringに変換して判定するのが良いかと思われます。

tera 09-04-09 (木) 23:39

メモがてら書いたエントリが勘違いエントリだとはお恥ずかしいです!
補足いただきどうもありがとうございます。

Comment Form
Remember personal info

Return to page top