Things that equal false
November 9th, 2007 . by polyGeekSo I’m writing this Flex widget/app/thingy that will let people vote for things on my site. I need to test that the user has selected one of the radio buttons when they hit the submit vote button. The code for that is:
Pretty simple stuff. In the if-statement I’m essentially saying, “if votingChoices.selectedValue DOESN’T exist then do this stuff, else do this other stuff.
Like I said, simple. Right?
But there’s a catch. I wasn’t paying attention and gave the radioButtons data values of, wait for it, numbers starting with zero. And you know what that means: no one will be able to submit the first choice in the list.
Okay, so simple fix. I shouldn’t use numbers, especially starting with zero, for the radioButton values.
But better yet I could just change the if-statement to:
if( votingChoices.selectedValue == null ) { ...
That would be the smart thing to do. And I tell myself that all the time. Don’t test for the existence of something in an if statement by just placing a reference. Go ahead and write out undefined or null. Because that’s what you’re really testing.
I can’t count the number of times I’ve screwed that up. So now every time I do that I’ll force myself to come back to this post and comment that no I can’t learn from my mistakes. :-)
So here are a few other things that equate to false. From Moock’s Essential ActionScript 3.0.
| Original data | Result after conversion |
| undefined | false |
| null | false |
| NaN | false |
| 0 | false |
| Infinity | true |
| -Infinity | true |
| Other numeric value | true |
| Nonempty string | true |
| Empty string (”") | false |
| Object | true |
Here is a table of the default values for the various types.
| Datatype | Default value |
| String | null |
| Boolean | false |
| int | 0 |
| uint | 0 |
| Number | NaN |
| All other types | null |












I like to use !! to check for all kinds of values.
like…
theVar = !!theVar ? theVar : anotherVar;
@Peter, that’s a nice trick. Any downsides to that you can think of?
Leave a Reply