function stringToBoolean(str, defaultValue) { return !str ? (defaultValue ? true : false) : str.toLowerCase() === 'false' ? false : /^\d+$/.test(str) ? (parseInt(str) ? true : false) : true; }
true とか false がいっぱい出てくるのは好きじゃないなぁとか思っていじってたら
function anks2b (s, d) (!/^(\d+|false)$/i.test(s)|parseInt(s)|!!d*2)&1<<!s;
いつの間にかこうなってた。
(?:)を使わない方針。