2007/02/14に Scheme での Y Combinator の例について書きましたが、それをもとに Javascript でも容易に Y Combinator を関数として定義することができます。
ブラウザ上で動作するコードを含む html は以下のようになります:
<html>
<head><title>y.html</title></head>
<body>
<p id="result"></p>
<script type="text/javascript">
var Y = function (f) {
var g = function (x) {
var h = function (y) {
return (x(x))(y);
};
return f(h);
};
return g(g);
};
var fact = function (f) {
return function (n) {
if (n == 0) return 1;
return n * f(n - 1);
};
};
document.getElementById('result').innerHTML = '(Y(fact))(5) => ' + (Y(fact))(5);
</script>
</body>
</html>