【发布时间】:2011-12-04 21:07:06
【问题描述】:
对于数字,您可以使用+"10" 而不是Number("10"),后者更快。有没有办法对字符串中的布尔值执行此操作?
【问题讨论】:
-
Boolean("false")是true,顺便说一句。 -
@FelixLoether 这当然是我的疏忽。 +1
标签: javascript boolean
对于数字,您可以使用+"10" 而不是Number("10"),后者更快。有没有办法对字符串中的布尔值执行此操作?
【问题讨论】:
Boolean("false") 是true,顺便说一句。
标签: javascript boolean
使用正则表达式很愚蠢。如果您真的只想匹配字符串 'true' 并且不关心区分大小写,只需与该字符串进行比较:
function parseBoolean(s)
{
return s === 'true';
}
我想如果我真的要和你玩“填空”,我会回答:
+"10" is to Number("10") as !!"true" is to Boolean("true")
因为Boolean(x) 仅在x 为假值时,即x ∊ {null, undefined, false, 0, ''} 时返回false。
【讨论】:
s === 'true',因为函数调用开销可能不可忽略:jsperf.com/string-to-boolean/2。有趣的是,在我的机器上,你的 Object Map 方法是最快的。
一些不太好的和邪恶的解决方案:
window.toBool = {'false':false,'true':true};
toBool['false'] === false
eval('false') === false // don't ever do this!
JSON.parse('false')
【讨论】:
toBool[42] 是 undefined。
window 的前缀与我最近阅读的一些最佳实践不太相符。 +1
如果匹配单词true 的所有大小写变体是要求,我相信使用正则表达式是最快的,例如:
/^true$/i.match(input)
【讨论】: