Skip to main content
Ben Nadel at Scotch On The Rocks (SOTR) 2011 (Edinburgh) with: Jim Cumming
Ben Nadel at Scotch On The Rocks (SOTR) 2011 (Edinburgh) with: Jim Cumming

ColdFusion Boolean Evaluation And #( 3 + "Yes" )# = 4

By
Published in Comments (5)

I always knew that numbers can be cast to boolean such as in:

<cfif Len( lstIDs )>
	...
</cfif>

But, I had no idea that boolean values can actually evaluate to numbers. This is news to me. Apparently True values are evaluated to 1 and False values are evaluated to zero. So, the equation (3 + "Yes") evaluates to (3 + 1) which is 4. Similarly, (4 + True) evaluates to 5. (False * anything) is zero.

Crazy stuff. I am not sure when I would ever use this, but I thought I would point it out in case there were any people out there like me who never knew this was an option.

One word of caution, "Yes" gets evaluated to a boolean, but Yes, might throw an error since it stands for a variable whose name is "Yes".

Want to use code from this post? Check out the license.

Reader Comments

15,902 Comments

Yeah, the negative ones I get in ColdFusion, but I am very afraid to use them in Javascript... in fact, I am scared to use numbers as booleans in Javascript at all as I am not sure if it always works. I never take the time to just sit down and test it for some reason. Like, can I do:

if ("Ben".length){ ... }

Who knows? Hopefully me one day :)

1 Comments

Non zero numbers (including negative) equate to True. Null strings, or in CF certain strings like "No" or "False" will return False. #( 3 + "Yes" )# = 4, but also #YesNoFormat(4)# = Yes.

It can be very useful for example if you take a string input and only want to do some action if some value was entered:

string input = getInput();
if(input){/*Put useful code here*/}

However, if("Ben".length) is like saying if(3), or if(true). In that case you might as well leave out the if statement.

This seems to be the case for any language, but of course there could be some exception to the rule.

Hope that helps

1 Comments

It comes in extremely handy when you are setting query or sproc parameters and need to set a null for a empty string.
Example:
<cfprocparam cfsqltype="CF_SQL_VARCHAR" value="#someString#" null="#yesNoFormat(not Len(someString))#">

15,902 Comments

@Judah,

Word up to that! And I'll do you one more - I don't believe you actually need the yesNoFormat() function. I believe the "#not len()#" should be sufficient.

I believe in love. I believe in compassion. I believe in human rights. I believe that we can afford to give more of these gifts to the world around us because it costs us nothing to be decent and kind and understanding. And, I want you to know that when you land on this site, you are accepted for who you are, no matter how you identify, what truths you live, or whatever kind of goofy shit makes you feel alive! Rock on with your bad self!
Ben Nadel