Tach!
Nachtrag:
for(i=0;i<bin.length;i++){ console.log( bin[i].codePointAt(), escape(bin[i]) ); }
bin[i].codePointAt()
lässt sich auch als bin.codePointAt(i)
notieren. Es bleibt sich gleich, ob du einen String der Länge 1 aus einem String an Position i extrahiert und dessen erstes Zeichen untersuchst oder ob du gleich das Zeichen an Position i untersuchst.
codePointAt() ohne Parameter aufzurufen ist auch nicht definiert. Da findet wohl intern eine Konvertierung von undefined zu 0 statt.
dedlfix.