ブックマーク / qiita.com/VoQn (3)

  • NaN をなんとかしたい上での諸注意 と global.isFinite() の罠 - Qiita

    typeof NaN // 'number' typeof Inifity // 'number' typeof -Infinity // 'number' toString.call(NaN); // '[object Number]' Infinity == Infinity // true Infinity == -Infinity // false Infinity == NaN // false NaN == NaN // false NaN === NaN // false (!!) みんな知ってるね 2. global.isNaN("NaN") は true, global.isFinite("0") も true で、このNaN や Infinity が厄介である為に isNaN() と isFinite() がグローバルオブジェクトに用意されているのですが、これもまた罠が

    NaN をなんとかしたい上での諸注意 と global.isFinite() の罠 - Qiita
    t_f_m
    t_f_m 2012/09/26
  • ((x, y, z…) ->).length is 0 - Qiita

    CoffeeScript は上記のイディオムで y == null であった場合にデフォルトに指定した 0 へ代入します。 この場合の f.length はどうでしょうか。結果は 2 です。これも、納得できる結果かと思えます (これも人によっては 1 であるべきじゃないか、という感覚もある) それでは、平面以上、n次元上 (n > 1) の座標点を汎用的に受け付ける point 関数をこのように宣言してみます

    ((x, y, z…) ->).length is 0 - Qiita
    t_f_m
    t_f_m 2012/09/14
    ここが変だよCoffeeScript
  • javascript での関数部分適用 - Qiita

    javascript での関数の部分適用(カリー化の説明を参考)は比較的カンタンにできます。 サンプルコードは CoffeeScript で書いています。 partial = (f) -> require_length = f.length partialized = (args...) -> if require_length <= args.length # 関数に必要な引数がすでに足りている g = f.apply(null, args.slice(0, require_length)) # 適用して結果を取り出す if typeof g is "function" # 結果、関数が返ってきた # args の余りから、次の関数を更に部分適用して返す partial(g).apply(null, args.slice(require_length))) else g # 関数以外のも

    javascript での関数部分適用 - Qiita
    t_f_m
    t_f_m 2012/08/17
  • 1