(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください)
注意: 厳密にn回に1回ではないです
10000回もconsole.logを呼び出すと重くなりますよね。それでcount変数を作ってcount%1000===0として実行回数を落とす。でも、監視対象がどんどん増えていって、count変数が増えて、countが配列になって、countを監視するために引数を工夫して…という恐ろしいことになったことがある人向けの記事です。
解決したいこと
count変数なしで、関数が10000回呼ばれるごとにconsole.logを呼び出したい。
概要
乱数を使います。なんで思いつかなかったんだろうってくらい簡単な事でした。
function lightLog() { if ((0 | Math.random() * 10000) === 0) { console.log.apply(console, [].slice.call(arguments)); } };
使い方は lightLog('hoge');
のように普通にconsole.log呼ぶ感じで引数渡すだけです。(0 | Math.random() * 10000)の10000の部分を変更すると実行する頻度が変わります。
まあ実装見て分かる通りおよそ1万回ごとであって厳密に1万回ではないです。でも9997回でも9810回でも別にいいですよね。キリがいいから1万回なだけですしおすし。