JavaScript

2008年02月10日

// 自分用メモ

function文と関数リテラル

例えば、x と y を加算した結果を返す関数 add を定義するとしよう。

function add(x,y) { return x + y }
これを「function文」という。Schemeでいえば
(define (add x y) (+ x y))
に相当。

Schemeにおいてこれが

(define add (lambda (x y) (+ x y)))
と同等であるように、JavaScriptでも
var add = function(x,y) { return x + y }
という書き方ができる。Schemeのlambda式にあたるこの記法を「関数リテラル」という。varはdefineに相当。

ここで問題になるのは、function文も関数リテラルも

function [関数名] ([引数1[,引数2[,...]]]) { [文1[;文2[;文3[;...]]]] }
という構造をしているため、同様の表記が文のどこに現れるかによってパーサの解釈が変わることだ。即ち、文頭にfunctionが現れれば「function文」、文頭以外に現れれば「関数リテラル」と解釈される。
amachangが
// function() {}()
// と書くと
// function() {} が式ではなく、文として解釈されてしまうからだ。
// 文として解釈されないためには、文の途中(最初以外)に function と書いてやる必要がある
// なので、まず開きカッコを書いてやる。
と言っているのはどうやらそういう事らしい。

続きを読む

(02:41) Φ

2008年01月14日

今回のKanasan.JSはamachangも参加するとのこと。[これは見逃せない]

午前の部から参加すべく、徹夜明けのまま6:16発ののぞみで大阪へ。
(博多土産を買うはめにならないよう携帯に電話してくれたKanasanほか親切な皆さん!どうも有難うございました)
9:30頃会場に到着。数年前に別件で使ったことのある会議室でした。続きを読む

(21:30) Φ

2007年11月02日

Mozilla JapanとShibuya.jsのコラボイベント「The Future of JavaScript」に秋葉原まで行ってきました。

○挨拶
etoさん(!)による前説。JavaScriptの歴史。

○The Future of JavaScript (John Resig)
ECMAScript 4ってそんなに機能盛り込んじゃっていいの?非常に興味深いけれど。!とか?とか付けるのはschemeと用途が違うので混乱しそう。
最前列でハイレベルな質問を連発するamachangがあまりにもかっこよかった。
VM仕様とか興味あるのであとでTamarinの資料をあさってみよう。

○休憩
ジュース買おうと思っていて誰かに声をかけられたと思ったらひげぽん氏。(催促して)新しい名刺を頂いた。

○日本のJavaScript最新動向 (Shibuya.jsの皆さん)
XPathに関心をもった。
JavaScriptとHTMLでJava VMを実装したOrtoに感動。

○John Resig に一問一答!
OrtoのYu Kobayashiさんとamachangによる豪華なQ&Aの連発。
通訳GJ

○Firefoxマウスパッド(サイン入り)10枚争奪じゃんけん大会
なんか最近こういうじゃんけんで負ける気がしない。サイン入りマウスパッドをGET。Resig氏と握手。Resig氏に自己紹介してるmala氏を近くで見た


○懇親会
懇親会には参加せずそそくさと帰る。

// 帰りにVELOCEでpurpleのExercise4.4.5(b)を考える。道筋が見えたあたりで閉店。


(23:49) Φ