【javascript】function.bind()でハマった。

タイトル通り、javascriptの function.bind()でハマった。

gist.github.com
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

function.bind() で、文字列を分岐しようとしていますが、
default に分岐してしまったのです。

原因は

thisArg として渡されるプリミティブ値はオブジェクトに変換されます

Function.prototype.bind() - JavaScript | MDN

それで、

switch文は厳密等価演算子 === を使用している比較する

switch - JavaScript | MDN

ということは、
String( "STR" ) === "STR" のように比較するため、
defaultに分岐しました。

// 1.  bind する時に パラメータとして渡して使うか
func.bind(null, str)();

// 2.  toString() を使う
switch(this.toString()) {...} 

で変更すれば正しく分岐されます。