JavaScript第5版読書会#4 & 懇親会に参加しました
http://groups.google.co.jp/group/kanasanjs/web/kanasan-js-javascript54
初めてのJavaScriptです。とりあえず逆ポーランド電卓を作ってみました。エラーチェックはまだまだ甘いです。やっぱり無名関数が使えるのはいいなぁ。協力してくださった方々、どうもありがとうございます。
<html> <head><title>rpcalc</title></head> <body> <form name="input" onsubmit="rpcalc(); return false;"> <input type="text" name="expr"> = <span id="result"></span> </form> <script language="JavaScript"> function op(stack, f) { if (stack.length < 2) throw "invalid expr."; var x1 = stack.pop(); var x2 = stack.pop(); stack.push(f(x1, x2)); } function rpcalc1(exprs) { var stack = []; for (var i = 0; i < exprs.length; i++) { switch (exprs[i]) { case '+': op(stack, function (x1, x2) { return x2 + x1 }); break; case '-': op(stack, function (x1, x2) { return x2 - x1 }); break; case '*': op(stack, function (x1, x2) { return x2 * x1 }); break; case '/': var f = function (x1, x2) { if (x1 == 0) throw "devided by 0."; return x2 * x1 }; op(stack, f); break; default: stack.push(Number(exprs[i])); break; } } return stack.pop(); } function rpcalc() { var expr = document.input.expr.value; var result = document.getElementById("result"); try { result.innerHTML = rpcalc1(expr.split(" ")); } catch(ex) { result.innerHTML = ex; } } </script> </body> </html>
その他
- EMCAは「えくま」と読む。
- QuickLookのデモ by ujihisaくん。VIMの中から画像表示。