http://dev.ariel-networks.com/wp/archives/755
それJavaScriptでも出来るよネタ。
Firefox限定ですが。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | function makePseudoArray(length) {   var arr = Proxy.create({     get: function(receiver, name) {       return name == 'length' ? length : +name;     },     getPropertyDescriptor: function(name) {       return {         value: this.get(this, name),         writable: true,         enumerable: true,         configurable: true       };     }   });   return arr; } var $break = {}; var result = []; try {   Array.forEach(makePseudoArray(0x1fffffffffffff), function(n) {     n += 1;     switch (true) {     case n >= 100:       throw $break;     case !(n%15):       result.push('Fizz Buzz');       break;     case !(n%3):       result.push('Fizz');       break;     case !(n%5):       result.push('Buzz');       break;     default:       result.push(n);     }   }); } catch (e if e === $break) {   console.log(result.join(',')); } | 
無限と言っておきながら上限が決まっている(jsの数値の限界)のと、
ループを例外で抜ける(prototype.js方式)のが微妙です。


























uchida
書いてから気づきましたが、Firefox限定でいいのならジェネレータ使った方がまともですね。