Daily Archives: 2012年2月21日

[JavaScript]即時関数の呼び出しが,なぜ「(function(){…})()」の形式になるか説明してみる。

2012年2月21日 (カテゴリ: JavaScript:)

JavaScriptでは即時関数という仕組みがあります。 即時関数は、グローバルな名前空間を汚さない無名関数を作って、その関数を直ぐにコールする方法です。 コードは、以下のような形式になります。 (function() { alert( "hello" ); })();(function() { alert( "hello" ); })(); jQueryとかのサンプルを見ると良く見る形式ですが、なぜこの形式で即時関数を定義できるのか、 改めて考えてみます。 まず、無名関…


続きを読む

[JavaScript]関数に、一度しか実行しない初期化処理を組み込む

2012年2月21日 (カテゴリ: JavaScript:)

関数に、コンストラクタのような一度しか実行されない初期化処理を組み込むことが出来ます。 下記の例では、getCounter()で関数オブジェクトを取得するたびに、初期化処理がコールされます。   // 関数の定義 var getCounter = function() { // コンストラクタ的な、初期化処理 console.log( "initialize" );   // この変数は呼び元から見えない(privateな状態になる) var counter = 0;   return function…


続きを読む

[JavaScript]例外発生時に、catch句でエラーの発生場所を取得する

2012年2月21日 (カテゴリ: JavaScript:)

JavaScriptのtry-catchのcatch句で取得できる例外オブジェクトは、エラーの内容を伝えるためにnameとmessageプロパティを持っています。 JavaScriptの標準規格では、例外オブジェクトが持っているプロパティは2つのみですが、firefox等の一部のブラウザでは、これらに加えてエラーが発生したファイルや行番号の情報も取得することが可能です。 これらの情報はfirefoxの場合はfileName,lineNumberで取得できますが、標準仕様からの拡張である為、IEでは取得することが出来ません。 ブラウザの互換性まで考慮したうえで、以下のようなエラー処理を書いておく…


続きを読む