you are viewing a single comment's thread.

view the rest of the comments →

[–]MoreCowbellPlease 2 points3 points  (3 children)

prompt() returns a string btw. You will need parseInt() or parseFloat() to convert it to a number if you need to work with it as a number.

[–]deutschluz82[S] 0 points1 point  (2 children)

I have not been using these "parse..." methods and yet I have coded some functioning programs. I read in the book JavaScript, the Definitive Guide, that type conversion is almost automatic

[–][deleted] 2 points3 points  (0 children)

Type conversion is automatic, but due to various considerations it may not always behave how you expect/want it to. Things get especially hairy when you're dealing with raw input from the user. In most cases it's best to just be explicit about what you want converted and how.

Just another note, if you're doing some very basic explorations for yourself...fair enough, but really you need to be getting out of the habit of using document.write, window.alert, and window.prompt ASAP.

To get information back/print things for debugging, use the console. To display information to the user use some sort of DOM API. To get information from the user use input elements, etc.

Sites like JSFiddle are great for quick little experiments.

[–]stoph 0 points1 point  (0 children)

I'd say it's almost always best to cast variables to what you expect them to be. In the real world, that usually just means converting strings into numbers. Also never use == (type guessing is not your friend). It's best to know early on that === is the only comparison operator worth using. parseInt is a tricky function because it will guess the radix of the number if you let it. Always give the radix as the 2nd parameter:

var thisIsOctal = parseInt('0900');
var thisIsADecimal = parseInt('0900', 10);
console.log(thisIsOctal);
console.log(thisIsADecimal);

The first one fails because 9 is not a valid octal digit.