取り扱える値の範囲内だったら、処理に使用するように修正して対処しました。
photo credit: tripu via photopin cc
正しく動作するように修正したはずが、Webサーバーが違うためか、期待通りの動作をしない現象が発生しました。
まだMacでのFlashの動作に悩み中 - ソフトウェア開発者の日常
変数のチェックを、未定義の変数なのか、空文字なのかをすれば正常に動作するようでした。
そうでなかった場合さらに調べなければならないので、チェックの方針を変更しました。
範囲内かチェックして、代入
今回の現象の元となっている変数の値は、ある範囲内に収まっていれば利用し、外れていればを変数に1を代入していました。別の変数を用意して1で初期化し、チェックの対象にしている変数の値が、ある範囲内に収まっていれば代入するようにしました。
var work = 1; if (param >= 1 ) { if (max >= param ) { work = param; } }
このように修正して動作を確認したら、IISの環境でも正常に動作するようになりました。
コンパイラのバグ対処
上記のコードは、演算子の&&を使えばif文は1回で済みますが、コンパイラが実体参照と誤って判定してコンパイルエラーにしてしまうので、入れ子のif文になっています。コメントアウトしていてもコンパイルエラーになるので、コンパイラはまず実体参照がないかチェックしているようです。
また、判断条件で、<と>があるとタグと誤って判定してコンパイルエラーにしてしまいます。