爲什麼會出現這種失敗:的ColdFusion structkey開始數
<CFIF isdefined("URL.3dfile")>...</CFIF>
與以下消息:
參數IsDefined的功能1,也就是現在的URL.3dfile,必須是語法上有效的變量名。
,這將不是:
<CFIF structkeyexists(URL,"3dfile")>...</CFIF>
是得到它的方式解析沒有太大的一樣嗎?而.. ..是以數字開頭的變量無效或不是他們?
爲什麼會出現這種失敗:的ColdFusion structkey開始數
<CFIF isdefined("URL.3dfile")>...</CFIF>
與以下消息:
參數IsDefined的功能1,也就是現在的URL.3dfile,必須是語法上有效的變量名。
,這將不是:
<CFIF structkeyexists(URL,"3dfile")>...</CFIF>
是得到它的方式解析沒有太大的一樣嗎?而.. ..是以數字開頭的變量無效或不是他們?
Seybsen - 變量名稱不應以數字開頭。這可能是舊版非CF版CF的遺留問題。其中變量不是對象的一部分。
但是,在java世界中,一切都是一個對象。這導致語法細微差別。如果您使用虛線表示法使用變量名稱,您的var名稱可能會引發錯誤。但以其他方式使用它,它會成功。
所以這種語法的工作 url['33foo']
但直接設置一個變量名 - 33foo = true
- 將無法正常工作。
這裏有一個完整的解釋文章。
http://www.coldfusionmuse.com/index.cfm/2005/9/8/isdefined%20vs%20structkeyexists
您可能還想查看[變量命名規則]上的文檔(http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7fd3.html# WSc3ff6d0ea77859461172e0811cbec09af4-7fde) – ale 2012-03-19 13:46:30
實際上二者得到解析的方式不盡相同。你應該試着避免使用isDefined()來支持structKeyExists();後者更有效率(至少這是收到的智慧;-))。 – 2012-03-17 20:43:29
isDefined()涵蓋了任何可能有點的變量。這可以包括結構,查詢,對象等。structkeyexists()只有在第一個參數是結構時才起作用。話雖如此,我驚訝第一個作品 – 2012-11-28 00:34:15