JavaScriptっぽい。

『JavaScriptっぽい。』の更新情報やJavaScriptに関する日記。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

forループでも大丈夫

昨日forループを使うといろいろ問題があると書いたけど、下記のように書けば問題ないですね。(部分的なコードなのでvar宣言が抜けてます。)


for( i = 0 ; choiced_card[i] ; i++ ){
	reg_exp = new RegExp( choiced_card[i] , "g" );
	if( ( choiced_str.match( reg_exp ) ).length > 1 ) {
		if( str.indexOf( choiced_card[i] ) > -1 ) {
			choiced_card.splice( i , 1 );
			i--;		//spliceするとインデックス番号がずれるのを修正
		}
		str += choiced_card[i];	
	}
}
  1. 2005/11/17(木) 22:20:36|
  2. 雑記|
  3. トラックバック:1|
  4. コメント:0

関数リテラルをそのまま実行

最近見かけるようになった書き方。


(function(){
 alert("hoge");
})();

イベントハンドラなども極力HTMLから切り離した上で、ステートメントをすべて関数リテラルの中に書いて、全体を()で囲み、最後に()をつけて、そのまま実行する。

最初に見かけたのはKURT'S DHTMLというスクリプト配布サイトだと思う。

正直最初は何でこんな書き方をするのだろうと謎であった。 わざと分かりにくい書き方をしているのだろうか?

しかし、最近いろいろなサイトにおける質問掲示板の常連回答者であるPid氏もこのような書き方をするようになっていて、ひょっとして合理的な書き方なんだろうか?と思うようになってきたのだが、やっと意味が分かりました。

思わず「そうだったのか~・・・!」と叫んで、そこらじゅうを走り回りそうになりましたが、どうやらグローバルな識別子をすべて排除するためにやっているようです。

要するに、Webサイト作成初心者の人たちは、いろいろなところから複数のスクリプトをべたべたと1つのHTMLに貼りたがります。 そこで問題になるのが、グローバルな識別子の衝突です。 それを防ぐための最もいい方法は、当然グローバルな識別子を1つも使わないことになります。 そこで、すべてを関数リテラルの中に入れて、変数はすべてvar宣言してローカルに閉じ込め、その関数リテラルの最後に()をつけて実行してしまえば、その関数にも識別子をつけなくて済むので、無用な識別子の衝突を防ぐことができます。

しかも、ローカル変数のみにした方が、スコープも当然狭くなってスピードやメモリ効率もよくなることが期待できます。(現状そこまで配慮する機会はあまりないとは思いますが…)

ひょっとしたら、今後はこういう書き方が主流になったりするんでしょうかね?

  1. 2005/09/24(土) 18:54:28|
  2. 雑記|
  3. トラックバック:0|
  4. コメント:0

とりあえず借りてみました。

「JavaScriptっぽい。」の更新情報のページがなかったんですが、「この際だからブログにしちゃえ」ということで、ちょうどFC2でブログサービスが始まったのを借りてみました。

ここは結構カスタマイズできそうな雰囲気です。 内容をHTML形式で書けて、CSSも細かく設定できます。 マニュアルとか見るのはメンドイんで、適当にやってますけれども。

これからは、更新情報をブログで作るのが流行るかもですね。

  1. 2004/12/26(日) 18:35:01|
  2. 雑記|
  3. トラックバック:0|
  4. コメント:11
前のページ

PUREST

06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

Links

Search

Recommend

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。