2009/10/06

面白そうなJavaScriptを見つけた

WS000021

AJAX Client Library for ADO.NET Data Services

CodeZineの記事を読んでたら何やら面白そうなものを発見。早速ダウンロードして読んでみた。JSだけど.NETらしいコードや名前付けで読みやすかった。(別に全て目を通したわけではないけど)

 

目に付いたのはStringBuilderクラス(MicrosoftAjax.debug.js)。C#でもそうだけどJSでも+演算子での文字列連結遅いもんねー。ところでJSって名前に$使えるんだね。知らなかった。

 

ついでにJSで気になってたところや曖昧だったところを少し試し書きしてみた。

処理系はEjacs

 

 

乱数ってどうやるんだっけ

// 乱数 0 ~ 10000
parseInt(Math.random()*10000);
// 8503

 

$マーク使えるんだ

// $
function aaa$bbb ()
{
  return "called 'aaa$bbb'";
}

aaa$bbb();
// called 'aaa$bbb'

 

// $
function $ ()
{
  print("called '$'");
};


$();

// called '$'

 

argumentsってローカル関数の場合どうなるんだろ

// arguments
function test ()
{
  var pargs = function (args, msg)
  {
    var ret = [];
    ret[args.length] = msg;
    for (var i = 0; i < args.length; i++)
    {
      ret[i] = args[i];
    }
    return ret;
  };

 

  print(pargs(arguments, 'nest level 0'));

 

  var fun = function ()
  {
    return arguments;
  };

 

  print(pargs(fun(2, 4, 6), 'nest level 1'));
  return 'end test';
};

 

test(1,3,5,7,9);
/*
1,3,5,7,9,nest level 0
2,4,6,nest level 1
end test
*/

 

C#のnull結合演算子(??)みたいなのってどうだったっけ

// null coalescing operator
null | 1;
// error

 

null || 0;
// 0

 

1 || null;
// 1

 

null || undefined || 9;
// 9

 

function coalesce ()
{
  var arg = arguments;
  for (var i = 0; i < arg.length; i++)
  {
    if (arg[i])
    {
      return arg[i];
    }
  }
};

/*
coalesce(1,2,3,4)
1
coalesce(null, 1, 2, 3)
1
coalesce(null, undefined, 1, 2, 3)
1
*/

 

function arrayCoalesce(ary)
{
  return ary || [];
};

/*
arrayCoalesce(null)
1,2,3
arrayCoalesce(undefined)
1,2,3
arrayCoalesce([])
arrayCoalesce([1])
1
*/

 

厳密な比較じゃないとハマるよねーとか

1 == 1;
// true
1 === 1;
// true
1 == '1';
// true
1 === '1';
// false
true == 1;
// true
true === 1;
// false
true == '1';
// true
true === '1';
// false
false == 'false';
// true
false === 'false';
// false

 

何も関係ないけどiota

// iota
function iota (max, min, inc)
{
  var ret = [];

  for (var i = 0, j = min || 0;
       j <= max || 0;
       i++, j = j + inc || 1)
  {
    ret[i] = j;
  }
  return ret;
};

 

 

どこで読んだか忘れたけど「星の数ほどあるJavaScriptの本の中で"唯一"の良書」と聞いて購入。基本的な言語仕様の説明である10章までを読んで満足して積んでる。

JavaScript 第5版
JavaScript 第5版
posted with amazlet at 09.10.06
David Flanagan
オライリー・ジャパン
売り上げランキング: 5119
おすすめ度の平均: 4.0
4 言語としてのJavaScriptに一番踏み込んだ本
5 JavaScriptのバイブル本
4 JavaScripterに捧げる本
5 JavaScriptを理解したいのならだまされたと思って読んでください
2 初心者には難しいです

0 件のコメント:

コメントを投稿