JavaScriptの履歴

今までにないおもしろい言語。未来に生き残る言語はこれかも

オブジェクト(連想配列)の順序

http://d.hatena.ne.jp/holidays-l/20061206/p2
仕様では順序は保証されないらしい。
念のためIE6, IE7, Firefox2, Firefox3, Opera9.5, Safari3, Chromeで要素数増やした下記コードで調べてみても順序通りでした。

var a = {
    'a':1, 'b':1, 'c':1, 'd':1, 'e':1, 'f':1, 
    'g':1, 'h':1, 'i':1, 'j':1, 'k':1, 'l':1, 
    'm':1, 'n':1, 'o':1, 'p':1, 'q':1, 'r':1, 's':1
};
for (var i in a){
  document.write(i);
}
document.write('<br>');
a.t = 2;
a.u = 3;
a.v = 4;
a.w = 5;
a.x = 6;
a.y = 7;
a.z = 8;

delete a.a;
delete a.c;
delete a.f;
for (var i in a){
  document.write(i);
}


Argumentsオブジェクトを配列にする

var array = Array.prototype.slice.call(arguments, 0, arguments.length);

nullなら空のオブジェクトにする

hoge ||= {};

グローバル空間を使わないようにする

(function(){
  ...
})();

型変換

via http://www.ideaxidea.com/archives/2010/03/javascript_type_co...
良く見る"!!" はbooleanへの型変換だったのか

var myVar   = "3.14159",
    str   = ""+ myVar,//  to string
    int   = ~~myVar,  //  to integer
    float = 1*myVar,  //  to float
    bool  = !!myVar,  /*  to boolean - any string with length and any number except 0 are true */
    array = [myVar];  //  to array