上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。
 今週は、会社の仕事が大詰めで忙しい!ちょっと、更新が簡単になるかも。
 というか、仕事中、いいネタ思いついたんだけど、忘れてしまった…。後悔…。


 昔、あるグローバル変数が宣言されているかいないかを判断する方法はないかと探していた。

ソース1


if( j == undefined ){ //この時点でエラー「"j"は宣言されていません。」
alert( "jは、ないよ" );
}


 でも、ドットシンタックスを書かない、生の変数だと、処理する前にエラーとなってしまう。
 これじゃぁ、try、catch使ってやるしかないのかな…という感じだけど、そんなことで使うのはしっくりこないので、あきらめていた。

 が、しかし…。
 グローバル変数は、windowオブジェクトの1つという事に気づき、判断する方法が発覚。

 オブジェクトの場合、変数(→プロパティ)がない場合「undefined」が返されるのは知っていた。ということは、windowsオブジェクトとして、プロパティがあるかないかを調べればいいのか!というわけ。

ソース2


if( window.j == undefined ){
alert( "jは、ないよ" );
}


 うん、ばっちしだね。
 え?使い道?それは、グローバル関数・グローバルオブジェクトの有無!!!

ソース3


//関数の有無
if( window.myFunc == undefined ){
alert( "myFuncは、ないよ(宣言前)" );
}
myFunc = function(){ alert( "グローバル" ); }
if( window.myFunc == undefined ){
alert( "myFuncは、ないよ(宣言後)" );
}
//オブジェクトの有無
if( window.obj == undefined ){
alert( "objは、ないよ(宣言前)" );
}
obj = new Object();
if( window.obj == undefined ){
alert( "objは、ないよ(宣言後)" );
}


 うん、使えるねっ!

 おっと、ネタを思い出したかも。
 よし、明日にまわそう^^

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://crstl.blog123.fc2.com/tb.php/14-5a2dde16


Powered by FC2 Blog