473,383 Members | 1,829 Online

# compare string with numbers in javascript

if (123 > 33) will return true

and

if ("123" > 33) will return true

So my question is, if the above behaviors are the same?? If string is
a number, and
compare with another number, it will be the same behavior as compare 2
numbers?

In this case, it is comparing 2 strings that are numbers, so they are
string comparisons here.
correct?

if ("123" > "33") will return true

In this case, "33a" is not a number, that's why when it compare with
another number, it
always return false. correct?

if ("33a" > 33) will return false

Jul 23 '05 #1
3 20998
jr********@hotmail.com (Matt) writes:
if (123 > 33) will return true

and

if ("123" > 33) will return true
Correct.
So my question is, if the above behaviors are the same?? If string
is a number, and compare with another number, it will be the same
behavior as compare 2 numbers?
Yes. The "greater than" comparison operator, when given a number and
another argument, will convert the other argument to a number. The
conversion is the same as what the Number function does.
In this case, it is comparing 2 strings that are numbers, so they are
string comparisons here.
correct?
Correct. If *both* arguments are strings, the comparsion is lexical
comparison.
if ("123" > "33") will return true
The result of ("123" > "33") is false, since the first character of
the first string is smaller than the first character of the second
string.
In this case, "33a" is not a number, that's why when it compare with
another number, it always return false. correct?

Correct, because (Number("33a")) yields NaN, and (NaN > 33) is false.

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #2
Lasse Reichstein Nielsen wrote:
Correct, because (Number("33a")) yields NaN, and (NaN > 33) is false.

Actually, (Number.NaN < 33) is false as well. As is (Number.NaN == Number.NaN).

(Number.NaN != Number.NaN) is true, which goes against common sense, but it's
the documented behaviour:

<url:
http://devedge.netscape.com/library/...r.html#1193302
/>
<url: http://msdn.microsoft.com/library/en...onannumber.asp
/>

--
Grant Wagner <gw*****@agricoreunited.com>
comp.lang.javascript FAQ - http://jibbering.com/faq

Jul 23 '05 #3
Grant Wagner <gw*****@agricoreunited.com> writes:
Actually, (Number.NaN < 33) is false as well. As is (Number.NaN ==
Number.NaN).

(Number.NaN != Number.NaN) is true, which goes against common sense,

I'd say that (NaN == NaN) being false is what goes against common sense.
From that, I find it entirely logical that
(NaN != NaN) is the same as !(NaN == NaN)

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.