Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2009-03-25

valueOfで遅延評価すごい→使いどころがイマイチわからん

06:04

こんなの見つけたので。

色々リンク辿ってみたのだけど、

Haskell 風に書けたり竹内関数をサクっと解けたりするのはそれ自体おもしろいしすごいと思うけど、JavaScript としての実際の使いどころが思いつかない。考えが浅いんだろうなあ。

こっちのコードでは、

こんなことをしてる。

var Remain = {
	valueOf : function(){
		var total = root.scrollHeight - root.clientHeight;
		var sc = window.scrollY;
		// window.status = [total,sc];
		return total - sc;
	}
};
var watch_scroll = function(){
	var self = arguments.callee;
	if(enable && Remain < 500){
		do_request()
	}
	setTimeout(self,100);
};

こんなぐらいだったら普通に

var getRemain = function(){
	var total = root.scrollHeight - root.clientHeight;
	var sc = window.scrollY;
	return total - sc;
}
var watch_scroll = function(){
	var self = arguments.callee;
	if(enable && getRemain() < 500){
		do_request()
	}
	setTimeout(self,100);
};

とか書けばいいだけだし、可読性も上だと思う。(速度は検証してない)


「条件分岐によって無限ループ (やそれに近い状態) に陥る可能性がある関数」で使えるらしいんだけど、JavaScript でそういうことをする例が思いつかないなあ。


↓に対してのレス。

遅延評価の使いどころがわからないのか、valueOf/toStringの使いどころがわからないのか判断できない。遅延評価自体はこんなこともできる程度で、実際に必要になることはあまりないと思う。

deadspace

「遅延評価」の使いどころが分からないということでした。

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20090325
 |