быстрее логическое от преобразования строки - PullRequest
2 голосов
/ 05 декабря 2011

Для чисел вы можете сделать +"10" вместо Number("10"), что на много быстрее.Есть ли способ сделать это для логического значения из строки?.

Ответы [ 3 ]

5 голосов
/ 05 декабря 2011

Глупо использовать регулярное выражение. Если вы действительно хотите сопоставить только строку 'true' и не заботитесь о чувствительности к регистру, просто сравните ее с этой строкой:

function parseBoolean(s)
{
    return s === 'true';
}

Полагаю, если бы я действительно играл с тобой в "заполнить бланк", я бы ответил:

+"10" is to Number("10") as !!"true" is to Boolean("true")

, поскольку Boolean(x) возвращает false, только когда x является ложным значением, то есть, когда x ∊ {null, undefined, false, 0, ''}.

1 голос
/ 05 декабря 2011

Некоторые не очень хорошие и злые решения:

window.toBool = {'false':false,'true':true};
toBool['false'] === false

eval('false') === false // don't ever do this!

JSON.parse('false')
1 голос
/ 05 декабря 2011

Если требуется соответствие всем вариантам слова «true», я считаю, что использование регулярного выражения является самым быстрым, например:

/^true$/i.match(input)
...