ã¶ã£ã¡ãã
åã¯é 延è©ä¾¡ã®ãã¨ãã¶ãããã¾ãç解ãã¦ãªãã¨æãã¾ãã
ã§ããã¨ãããããããªã®ä½ã£ã¦ã¿ã
function l(a) { return typeof a == 'function' ? a() : a } // lazy ã® l
ãããã£ã¦ä½¿ã
function add(i, j) { return l(i) + l(j) } var count = 0; alert(add(1, 1)); // 2 alert(add(1, function(){ return 1 })); // 2 alert(add(1, function(){ return count++ })); // 1 alert(add(1, function(){ return count++ })); // 2 alert(add(1, function(){ return count++ })); // 3
ããã£ã¦é 延è©ä¾¡ãªã®ããª
ã§ããé¢æ°ä½ãã¨ãã«æèããªãã¨ãããªãããéãã®ããªã
ããä¸åããããªã®ä½ã£ã¦ã¿ã
function l(v) { return { valueOf: v } }
ãããã£ã¦ä½¿ã
function add(i, j) { return i + j } var count = 0; alert(add(1, 1)); // 2 alert(add(1, l(function(){ return 1 }))); // 2 alert(add(1, l(function(){ return count++ }))); // 1 alert(add(1, l(function(){ return count++ }))); // 2 alert(add(1, l(function(){ return count++ }))); // 3
ããã£ã¦é 延è©ä¾¡ãªã®ããª
ãã£ã¡ã¯ãé¢æ°ä½ãã¨ãã«æèããªãã§ãããã©ãã¤ã³ã¼ã«ã®ã¨ãã«è©ä¾¡ãã¦ãããªã
追è¨ï¼ãããªã®ãæãã¤ãã
Function.prototype.lazy = function() { return { valueOf: this } };
ãã é¢æ°ãããã¿ã¤ãã«ããã ãã ãã©
var random = Math.random.lazy() function add(i, j) { return i + j } alert(add(random, 1)); alert(add(random, 2)); alert(add(random, 3)); alert(add(random, 4)); alert(add(random, 5));
ãããããããããããããããããããããããããï¼
ããã¯äºæ³ä»¥ä¸ã«æåãããããããããï¼
ãã¹
éèªã®å稿æ¸ããªãã¨ã»ã»ã»ã»