IsDefined()是否被弃用并且isNull()取代了它的位置?

时间:2011-11-30 20:53:12

标签: coldfusion coldfusion-9

我正在使用ColdFusion 9.0.1

我最近在ColdFusion 9中看到,现在建议使用isNull()而不是isDefined()

我在网络上找不到太多关于此的信息。

在ColdFusion 9中使用其中一个是否有任何优势?

4 个答案:

答案 0 :(得分:6)

不,isDefined()不会被弃用,也不会弃用。

正如Shawn所说,IsNull()用于处理从Java返回的NULL,特别是用于从Hibernate返回的那些(ORM集成)。

StructKeyExist()比isDefined(“”)更精确,但从技术上讲,使用isDefined()并没有错,我会质疑structKeyExist()是否适用于所有情况。是结构中的每个变量还是某种变量?我不确定。

我认为你不必担心isDefined()很快就会消失。

答案 1 :(得分:5)

我认为真正的原因是添加了null()是为了提供一种更具体的方法来测试从对象,服务等返回的与Java相关的NULL - 而isDefined()测试以查看变量是否存在或不

真的有两个独立的功能。

答案 2 :(得分:3)

我知道一般来说人们已经离开了一段时间。它的主要用途是确定变量是否存在于特定范围内,但structKeyExists()更精确。 IsDefined()非常难以找到您要求的变量的任何可能实例。 (Sean Corfield had a bit to say about structKeyExists vs. isDefined。)

我没有看到任何建议使用isNull()而不是isDefined。实际上,如果你给它一个未定义的变量,我会期望isNull返回一个错误,但显然是有效的。

但是你如何做动态变量?

structKeyExists(form,"address_" & i)

您可以尝试数组表示法......

isNull(form["address_" & i])

...但如果i未定义,则会抛出错误。

答案 3 :(得分:0)

关于isDefined(varName)我的CLIENT.somevarname变量的值为空,并且当我尝试评估它时

  

<cfif isDefined("somevarname") and val(somevarname)> </cfif>

..它抛出一个错误:

  

在CLIENT中未定义元素somevarnameis

我用它来处理它,以防止在有条件地比较值时出现错误:

   len(trim(CLIENT.somevarname)) eq 0 

我转而使用isNull(),效果更好。