Generally the best practice is considered to be to avoid isDefined. This is because isDefined will search all scopes until it finds a matching variable. So it's more efficient to use structKeyExists, eg:
Also, another way to achieve this is to use cfparam, and specify 0 as the default: