■吉里吉里/KAG/TJS雑談質問スレ■その29
■ このスレッドは過去ログ倉庫に格納されています
0272名前は開発中のものです。
2015/07/31(金) 03:29:40.64ID:2pluXChDそれとも配列自体が定義されてるか調べたいのかよくわらんけど
どっちにせよundefined比較はtypeofを使うのが必須だね
前者の場合
[if exp="typeof sf.xxxx[0] == 'undefined'"]
後者の場合
[if exp="typeof sf.xxxx == 'undefined'"]
ifのexpはそのまま実行時に評価されるので&指定は不要。比較は上では==になってるが===でも全く問題ない
ただ、undefined比較だと例えば(後者の場合で)sf.xxxx=0みたいに意図しない値がすでに入っていた場合に
スルーされてしまうので、本当に厳密にやるなら
function IsObjectInstanceOf(ref, cls, base=sf) {
return (typeof base[ref] == "Object") && (base[ref] !== null) && (base[ref] instanceof cls);
}
みたいなオブジェクトのインスタンスのクラスまで調べる適当なヘルパ関数作っといて
[if exp="!IsObjectInstanceOf('xxxx', 'Array')"]
[if exp="!IsObjectInstanceOf('xxxx', 'Dictionary')"](※辞書の場合)
とかしておくと安心かもしれない
まぁぶっちゃけsfやfの初期値はvoid(typeof取った場合のみundefined)なので
他に変更されるような要因がなければ上みたいに長々と書かなくても
[if exp="sf.xxxx === void"]
で済ませる場合も多いね(記述少なくて楽だし)
■ このスレッドは過去ログ倉庫に格納されています