javascript

配列初期化問題

詰まった事.javascriptで配列を初期化するとき,こう書いた. // 実行環境 : v8 console // 長さ10の配列を全て整数10で初期化する var array = (new Array (10)).map (function (elem) { return 10;}); print (array); ,,,,,,,,, うまくいかない.そこで内…

Google V8 JavaScript Engine のソートメソッド

って,こうらしい // google-v8 javascript engine (on macosx) var array = []; print (array.sort) // 以下結果 function sort(comparefn) { var custom_compare = (typeof(comparefn) === 'function'); function Compare(x,y) { if (custom_compare) { re…

流行の

流行に敏感ですよ.ケンブリッジ関数について.こないだのRenaミーティングでのショートハックより. var cambridge= function (str) { return str.split(" ").map (function (w) { return (w.length > 3 ? w[0] + w.split ("").slice (1, -1).sort (Math.ra…

スコープ

以前にも書いたんですけど,スコープのこととか.jQueryでは他のライブラリとのコンフリクトを防ぐために $j = jQuery.noConflict (); ... $j (function ($) { .... }); みたいに一部で$の値(関数)への割当を変更する事でうまく競合しないようにしている.多…

今まで気づかなかった..

ちょとはずかしい.HTML要素もJavaScriptから見るとやはりJavaScriptのオブジェクトであって,同様の操作が可能だったとは... setTimeout (function () { var hoge = document.getElementById ("fuga"); hoge.a = 3; alert (hoge.a);// 結果 : 3 }, 0); …

コードのネストを無視して動的にスコープを覆い隠す方法について

以前の記事で var a = 0; var fun = function (arg) { if (arg) { eval ("var a = 1;"); // exp.1 } print ("a : " + a); }; fun (true); // a : 1 fun (false): // a : 0 という方法を紹介しましたけど,実はこういう風にやる方が普通っぽい.わからないけ…

そろそろ自己中級者

わかりませんが.多分. EfficientJavaScript まずこのあたりから探りを入れていこう.

javascriptのsetTimeout

setTimeoutについては知ってるつもり.まー,普通にコードを書いている分には困ったことがなかったんだけど,もう一度整理して細かなポイントを引き出す.良く使う表現としてDOMセレクタを以下の用に表現しています.今時普通ですが. var $ = function (ele…

感慨深い

null参照の考案は10億ドル単位の過ち? 過ちだけじゃない,ヌルポという言葉(死語)を生み出した功績があるぞ!

頭いたい

酒飲みすぎた.その後のボーリングで程よくを遥かに超して酒が回りました.スコア108ま,こんなところか.前回の日記で書いた動的にスコープを解決する方法を考えた. var a = 0; var fun = function (arg) { if (arg) { eval ("var a = 1;"); // exp.1 } pr…

困ったときのECMA頼み

こちらのサイトにECMA-262の邦訳が載っています. Under Translation of ECMA-262 3rd Edition 困ったら原点に戻る.これ,世の常.まさに困ったときのECMA頼み

現実逃避

あなたは0x何歳(16進)か調べるスクリプトを内蔵したHTMLをつくってみた.めんどくさいのでソースを全部はっつける.使い方はテキストにはっつけてブラウザで開く.UTF-8じゃないとどうなるか知りませんが.IE以外なら多分動く.IEだと表示が崩れる多分.結果…

そうね.そうですね.

perl,javascript and more - evalは最後の武器 - 404 Blog Not Found 僕もDanKogai氏と全く同意見です(javascriptに関して.perlは知らない...)簡易ベンチの結果は興味深い.やはり,実行時に読み込むことはコストが高いという事か.そういや,lisp語族はどう…

InternetExplorerのJavaScriptおもしろ仕様

配列(Array)についてたまにやってしまうのだが, alert ([3,4,5,].length); と書こうものならIEでは4と表示される.いや,まぁ,そうな訳だけど,さぁ.たしかに,初期化時にメモリを確保したい気持ちもわかる.でも,最後って意味なく無い?どうせ無いんだし…

心が折れそう

InternetExplorerのデバッガDebugBarが使えない...FireBugの素晴らしさが身に染みます.心が折れそうだ.これも修行,というか苦行だとおもって頑張ります.

修正

今日のmapだけど,こっちの方がイケてる書き方な気がするので修正. // old Array.prototype.map = function (fun) { return function (ar, pThis) { for (var i = 0; i < pThis.length; i++) { ar.push (fun (pThis[i])); } return ar; } (new Array (), th…

FuckButt

FuckButtで尻を姦すくらい?ならFuck your Buttholeか.朝からなんてお下品(*'∀`*)いや,ぶっ飛ばすぞくらいかな.じゃなくて昨日のFizzBuzzのコードをば.iotaがあれば簡単にかける. document.writeln (((iota (1,101)).map (function (a) { return (a % 3)…

かわいそうなIEの為に

ちょ,mapも無いなんて...どうやってコード書いたらいいやねん.というわけで,自前のmapを作る.ついでもforEachとfilterも. if (!Array.prototype.map) {//IEか判定 Array.prototype.map = function (fun) { return function (ar, pThis) { for (var i = …

バカ直し

ちょっとした勘違いをメモしておく.schemeに於いて, 手続き呼び出しは継続を伴った引数付きgotoである*1 となっているわけなんだけど,JavaScriptでもscheme的な継続を取り出せるか.つまり,実行時の環境のスナップショットをとる,変数の束縛を記憶でき…

胃ヲタ

朝のコーディングは清々しいiikajsldkfjlkajslkf!!!!!!!また,朝コーヒーを飲みながらのDiana Krallも格別だ.某t-fridge日記でFizzBuzzをといているのを見て思ったんだけど,やっぱ,この手の問題にはrangeは最適だ.そういや,javascriptにはschemeのiota…

角の丸いボックスをつくるものをつくってみた.こんなかんじになる.コードを乗っけてみる. var mylib = {}; // general purpose style accesser // if you want to set style or get style, // you must use this function to access all styles mylib.sty…

の使い方が有ったとは... 自分の書いたコードを見直すと,なぜそう書いたのか分からないコードがある.後になって冷静に見直してみると,何が書きたいのかさっぱりわからない.今日はそんなものを見つけたので書いてみる. // 要約して書いています. var…

javascriptでlet風にかくならこうでしょう. (function () { return; } ()); でもやっぱ,おしりに引数の値を渡す書式が気に入らない.なぜかって,引数と渡す値の関係が分かりずらい.で, let ({a : 3, b : 4}, function () { return (a + b); }); と,書…

最近早起きのyamanekoです!朝のコーヒーとタバコがうめー!!! ふと思ったので書き留めておく.なんか,javascriptの関数の引数の式の評価順序が気になった.例を出そう. var array = [3, 4, 5]; (function (a, b) { document.writeln ("a : " + a + ", b…

バカしか落ちない落とし穴昨日の日記には落とし穴があった. // 配列を任意の値で初期化するメソッド Array.prototype.init = function (value) { for (var i = 0; i < this.length; i++) { this[i] = value; } }; はちゃんと動かない var array = (new Arra…

恐らくIEではmapやfilter, forEachはまだ使えないのかな.windowsが無いに等しいので知る術がないのですが... それはおいといて,配列を初期化するときこう書く.多分,普通. var array = new Array (3); for (var i = 0; i < array.length; i++) { arra…

なのかな?よくわからん.まず,当たり前の事から. // (i) var cl = function () {}; // 空のひな形 cl.prototype = {hoge : 3};// (ii) var obj = new cl (); // obj.hoge; // 3が帰ってくる for (var att in obj) { document.writeln (att); } // 当たり前…