Javascript Best Practice繋がり

http://togetter.com/li/59441

とぅぎゃったーのコレの中で、自分用のさらなるメモにいくつか抽出
誤訳とか当然あると思うのでご指摘ください


・大抵のケースではarr[arr.lengh] = 1;の方がpushより速い
・var x = y || z;はyがnull/false/emptyの際にzが入ります
・数値をfloorしたいときには var num = 2.22 | 0;でもいけるよ
・for(key in object) { if(object.hasOwnProperty(key) { //do something...avoiding retrieving method functions } }
・フックを掛ける
var oldX = X; X = function() {/*pre*/ var rv= oldX.apply(null,arguments); /*post*/ return rv;}
・スコープを良く考えろ
・ドキュメントよりソース読め
・"return false"よりも"event.preventDefault"と"event.stopPropagation"を使うべき
・URLからファイル名を取得するワンライナー
location.href.split("/").pop(); or location.href.split("/").slice(-1)[0]; //Non-Destructive
・文字列の結合は別の文字列を作成するよりArray.Joinの方が速いよ
・String.prototype.reverse = function () { return this.split('').reverse().join(''); }
・remember the mantra “eval() is evil.”
・ループ内でクロージャやめとけ
・配列の操作にはfor ... in 使わないように
・Dateをタイマーみたいに使いたいならvar start = +new Date();が変換する必要なくて楽
・Eval is evil.
・グローバルは可能な限りやめとけ
・イベントや匿名関数内で外の関数の"this"を保持するなら"that"という名前にしとくべき(使う必要あるならね)
・偶数奇数チェック if( i % 2)の代わりにif( i & 1)がビット操作になるので速いよ
・以下のような場合のparseIntは常にオプション引数(基数)も指定すること
parseInt("010") == 8 / parseInt("010", 10) == 10
・Form参照のやり方 > document.forms["formname"].elements["inputname"]
・文字列の中で単語を探すときは.search()より.test()が速いが、.indexOf()は.test()より早い(Chromeは除く)

疲れたのでこの辺で