Double Tilde vs. ParseInt with consitent NaN result (v13)

Revision 13 of this benchmark created by Kukkimonsuta on


Description

Test assumes that most of passed in strings are actually numbers.

Expected output:

"" -> NaN  
"1a" -> NaN  
"a" -> NaN  
"1" -> 1  

Setup

var i = '1561565',
        j;

Test runner

Ready to run.

Testing in
TestOps/sec
Double Tilde
// ~~"" returns 0
// ~~"a" returns 0
// ~~"1a" returns 0
// ~~"1" returns 1
j = isNaN(i) || i === "" ? NaN : ~~i;
ready
Double Tilde (len)
// ~~"" returns 0
// ~~"a" returns 0
// ~~"1a" returns 0
// ~~"1" returns 1
j = isNaN(i) || i.length === 0 ? NaN : ~~i;
ready
Plus sign
// +"" returns 0
// +"a" returns NaN
// +"1a" returns NaN
// +"1" returns 1
j = i === "" ? NaN : +i;
ready
Plus sign (len)
// +"" returns 0
// +"a" returns NaN
// +"1a" returns NaN
// +"1" returns 1
j = i.length === 0 ? NaN : +i;
ready
Times 1
// "" * 1 returns 0
// "a" * 1 returns NaN
// "1a" * 1 returns NaN
// "1" * 1 returns 1
j = i === "" ? NaN : i * 1;
ready
Times 1 (len)
// "" * 1 returns 0
// "a" * 1 returns NaN
// "1a" * 1 returns NaN
// "1" * 1 returns 1
j = i.length === 0 ? NaN : i * 1;
ready
ParseInt
// parseInt("") returns NaN
// parseInt("a") returns NaN
// parseInt("1a") returns 1
// parseInt("1") returns 1
j = isNaN(i) ? NaN : parseInt(i, 10);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.