Schemeをつくろう(22) - JavaScriptのメモ

JavaScriptSchemeを作る為に必要なことをメモっとく。

字句解析

tokenize = function(src) {
    return src.match(/\(|\)|'|[^\s()']+/g);
};
// tokenize("(hello Javascript and Scheme world !!)")
//   => #(( hello Javascript and Scheme world !! ))

配列に分解出来る。ステキ。

ほうほう。

/\"(?:[^"])*\"/

二重引用符の正規表現っぽいが、(?: )が何やってんのかよーわからん。エスケープ入れると更に大変そうだ・・・。

eval

<div onclick="eval(this.firstChild.nodeValue)">alert("hello")</div>

タグの中をeval。便利。

apply

無いと死ねる。

var scm = new Scheme();

function len() {
    return arguments.length
}

alert(len.apply(this, [1, 2, 3, 4])); // => 4

関数.apply(環境, 引数の配列)

JavaScriptにはクロージャがある。
thisの部分で遊ぶと時空を越えられるかも知れない。

  • 連想配列はObject型
  • 配列はArray型
  • null,undefinedはObjectを継承していない。。

括弧って便利ね

コロンで区切って複数式が書ける。

(alert("hello"),
 alert("world"))

構文はエラーになるので、無名関数で囲む。