¿Podrías hacerlo sin if?
Parte 2

2011-08-31 por @joseanpg


[En construcción]

Buscando a Smalltalk

Todo lenguaje que permita acceder dinámicamente a objetos estructurados (incluyo los arrays en esta categoría) cuyos campos pueden apuntar a funciones permite emular las sentencias y expresiones condicionales utilizando selectores sobre los campos de dichos objetos.

Todos conocemos el siguiente patrón para sustituir un switch

[PENDIENTE]
function empty(){};

function bool(booleanValue) {
  var branchs = [empty,empty];
  return {
     ifTrue:  function (f){ branchs[1] = f; return this;},
     ifFalse: function (f){ branchs[0] = f; return this;},
     exec:    function(arg){return branchs[Number(booleanValue)](arg);}
  };
}

(function (n) {
  (function fun(m) {
    console.log(n-m+1);
    bool(m>1).ifTrue(fun).exec(m-1);
  })(n)
})(100);