読者です 読者をやめる 読者になる 読者になる

tech memorandom

Webに関して調査したことや、メディアアート系(Max,Processing)で調査したことなどを書いていきます。

JavaScript tips

ブログたくさん書こうと思っていたのに仕事やら趣味やらでかなり放置気味だったので今年最後の日に更新しておきます。

 

JavaScriptのTipsです。特に珍しい話ではありません。

 

1. JavaScriptの型判定

古いシステムの場合、xmlしか返さないようなシステムがあるため、xmlからJSONに変換をかけたりするかと思うのですが、その時にオブジェクト配列に変換されたり、Arrayに変換されたりしたります。

変換元のxmlの構造の問題なのですが・・・

 

返ってきた配列がArraryなのかオブジェクト配列なのかによって要素を取り出すロジックが変わってくるので判別したいなーと。

 

そんな時に必須なのがinstanceof演算子。この演算子を使うとプロトタイプチェーンも含めてインスタンスの型を判定してくれます。

 

o instanceof Array ? alert("Arrary"):alert("not Array")

 

ではオブジェクトが連想配列か文字列かを判定する方法は?

連想配列はオブジェクト型なので型が同じ、かつlengthにも要素数ははいっていない。

 

var i=0;

for i in o{

 i++;

}

てな感じで要素数をとるしかないようです。(やり方知っている人いたら教えてください。)

要素が大きい場合は処理負荷になるので何度も要素数を確認するような処理を書く場合はArrayにいれてしまったほうが幸せです。

 

2. 処理を続けさせたくない場合はreturnを必ず記述する。

例えばaタグにidをつけて、そのidの要素に対してイベントをバインドして何か処理を行う場合、returnしないとその次の処理が走ります。

 

<a href="#" id='link'>ボタン</a>

function clickA(){

   $('body').html('飛びました');

   return false; //これがないとアンカーの処理が走る

}

 

当然といえば当然なのですが、coffescriptからJavaScriptを書き始めた私にはちょっと不思議な挙動でした。

coffeescriptの場合、functionに強制的にreturnが入るのでこういったことには遭遇しなかったので・・・

というわけでJavaScriptのfuctionにはreturnを処理を意図的に続けたい、という意思がない限りいれておくべきかと思います。処理的にも無駄な処理が走らないので優しいですし。

 

たとえ意図的だったとしてもコードに書かれていない処理を走ることを想定した実装は他の人は理解できない可能性がかなり高いとおもわれるので避けるのが無難だと思いますが・・・・

 

最近使ってないですけどcoffeeScriptってよくできてるなぁーと思いました。便利なだけでなくJSの無意味に難易度の高いところを吸収してくれるので。

 

今年は激しく環境が変わり、プログラムをちゃんと勉強できた年でした。

ずいぶんプログラムから遠い仕事ばかりしていて、たまに本読んだり、簡単なプログラムを書くぐらいしていたのですが、それでもまともなスピードでコード書けない人になってました。

 

やはり難しいことにチャレンジできる状況に身をおかないとちゃんと身につかないのだと実感します。

 

来年はプログラミングを継続しつつ、英会話とかデザインもやりたいのです。うまく自分をそこにもっていけるかが勝負の分かれ目になりそうです。

英会話もデザインもゆるくスクール通って勉強するのは本当向いてないので、どうしても何かをアウトプットしないといけない場所に身をおかないといけないです。

 

テレビでイチローが難しいことにチャレンジしようとする思いがある限り、野球はうまくなる、とチビッコに言っていましたが、胸にくるものがありました。

 

本当そう思います。難しいことをしないとダメですね。

 
今年もたくさんの人のお世話になりました。ありがとうございました。
来年もいい年にしたいです。