WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScript でdefined関数

0:[投稿] my [2003/12/26 22:01 ][環境:ie6 nn7 ]

JavaScriptでperlなどのdefined関数のような動きをさせる
方法は無いでしょうか?

ある変数が設定されていれば、動かすといった感じで以下のように
した場合 ( ある変数をobjとする )、

if(obj){
 alert("宣言されています");
}else{
 alert("宣言されていません");
}

『エラー: 'obj' は宣言されていません。』と出てしまいます。
definedのような動きをさせる場合、どのようにしたら良いのでしょうか?


1:[回答] Jankowski [2003/12/29 02:42 ]

変数は、すべてそのページのwindowオブジェクトに保存されているので

function definedAlert(varID)
{
if (window[varID])
{
alert(varID+"は宣言されています\n値は"+window[varID]);
return true;
}
alert(varID+"は宣言されていません");
return false;
}

definedAlert("obj")

これでできます。(確認はIE6のみ)


2:[回答] [2003/12/29 11:33 ]

> if (window[varID])
window[varID] の値が undefined, null, false, 空文字列, 0 である場合などを
宣言されていないと判定してしまっていいならこれで充分でしょう。

false, 空文字列, 0 は区別したい(宣言されていると判定させたい)なら、
if ( window[varID] == null ) { ... }
あたりだろうと思います。

これに加え null も区別する(undefined 以外なら宣言されていると判定)なら
if ( typeof window[varID] != 'undefined' ) { ... }

変数にundefined値が指定されている場合も宣言されていると判定させるなら
if ( varID in window ) { ... }
とか。

if ( window.hasOwnProperty(varID) ) { ... }
にすれば、プロトタイプのプロパティである場合を除外し
window固有のプロパティとして存在している場合のみを判定させられます。


3:[回答] my [2003/12/29 22:45 ]

有り難うございます。
そっか。変数は全部windowのプロパティと考えるんですね。
最近はtryで囲んで、catchと併せてやろうかと考えてましたが、
これはやめて、>>1、>>2を参考にやってみようと思います。
ありがとうございました。


4:[完了] my [2003/12/29 22:45 ]

 


5:[完了] Jankowski [2003/12/30 22:41 ]

nullですか、すみません配慮不足でした。(汗

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World