1.省略dim,方便但也是隱患! 2.函數(shù)內(nèi)申明的變量不會干擾外部的變量! response.Write a & "<br>" 結(jié)果顯示函數(shù)內(nèi)部申明的變量是不會干擾外面的,它的作用域就是函數(shù)內(nèi)部,其實(shí)學(xué)過其他語言的都應(yīng)該知道!但要先聲明,如果把函數(shù)內(nèi)的dim a去掉的話,那就把那個a認(rèn)為是外部的a,結(jié)果就變了!文件里面申請的變量,他的作用域就是這個文件。 3.讓人又愛又恨的include! 現(xiàn)在來討論更復(fù)雜的情況,如果你include兩個文件進(jìn)來,在這兩個文件中都有同一個變量名,如果兩個都用dim申請的話,還好,就只是報(bào)錯,說變量名已經(jīng)存在了,很快就能知道問題了。現(xiàn)在你可以理解我為什么講第二點(diǎn)的作用域了,由于作用域,不同文件同名變量一般情況下不會“打架”。但是,如果被另一個文件同時include進(jìn)來,問題就麻煩了,所以如果你寫的asp文件是準(zhǔn)備被包含的,請防止同名的情況發(fā)生。再回到原來的討論,如果兩個include文件中申請同名變量都dim還好,但是后包含文件是用省略dim申請,問題就來了,后面的省略dim申請成賦值了,要命的是,這是在兩個include文件中,很隱蔽,查找問題更困難! 綜上所述,大家可以寫一些簡單的例子來體會體會其中的問題,最后建議: ***現(xiàn)在講講查錯: 事實(shí)上,尋找問題比代碼編寫更重要!我個人經(jīng)驗(yàn),問題分三類: 2.邏輯類,比較討厭的問題,程序編譯成功,也能運(yùn)行,不過顯示的結(jié)果不是你邏輯中期望的結(jié)果。oh, my god!怎么辦,沒有提示信息,只能憑經(jīng)驗(yàn)和感覺去分析錯誤的結(jié)果,然后查源代碼,順利的話,幾分鐘解決,難纏的一天下來也沒結(jié)果! 3.性能類,很可怕的問題,程序編譯成功,也能正常運(yùn)行,顯示也正常!但是,偶爾隔段時間給你來個錯誤,你根本不知道錯誤是在什么情況下觸發(fā)的,或者程序性能不如同類程序的高,運(yùn)行慢,這些問題,有些一個星期一個月能解決了,有的幾乎就是頑疾,治不好。我就曾經(jīng)被這種問題折騰的死去活來! 所以,要想學(xué)好編程,就要嘗試自己解決問題,尤其象ASP程序,邏輯方面出問題的情況不大,出的問題基本都是報(bào)錯類的,有出錯信息,出錯位置,自己分析分析應(yīng)該不難解決。我看有些人愿意在論壇上花個三天等別人告訴自己問題,為什么自己不去解決呢?自己查到一個問題,就長了一分經(jīng)驗(yàn),這才是程序員的財(cái)富! ***一點(diǎn)程序員的心得: 對于第一個問題,我強(qiáng)烈建議大家使用變量前用Dim定義一下,多寫一行代碼并不是很困難的事。然后在ASP文件頭部用<%Option Explicit%>,這樣,如果不小心把變量名寫錯,就會返回變量沒有定義的錯誤,就可以很容易地查出錯誤位置,否則,該變量就是一個Null值。 另外,結(jié)合Option Explicit說一下第二個問題。有時候我們需要包含多個文件(比如head定義、頂部導(dǎo)航等代碼),而Option Explicit在一個ASP Application(注意這里是說application,特指一次應(yīng)用,而不是page,不表示一個頁面)只能用一次。所以,Option Explicit最好不要放在include文件內(nèi)部,以免被多個頁面多次調(diào)用引起混亂。 再說一個關(guān)于 include 的小問題。一般,如果需要包含的文件就在當(dāng)前目錄內(nèi),我們可以直接用 來包含它。但是,很多時候我們有N個需要包含的文件。于是,為了方便管理,我們將它們統(tǒng)一放在一個INC或include目錄內(nèi)。這樣,有時候包含代碼就寫成了: 這就是我要討論的問題。請注意,使用..可以訪問上層目錄,由于而帶來一個安全隱患:用戶有可能非法引用站點(diǎn)外部文件。基于這個理由,Microsoft 發(fā)布的 IIS Lockdown 工具屏蔽了這個引用方法,并且 Microsoft 在 Windows Server 2003 的 IIS6.0 上默認(rèn)是屏蔽這種方式的。對于這種不在本目錄內(nèi)的包含文件,推薦使用這種安全的引用方法: 歡迎更多有益的探索和討論 |
溫馨提示:喜歡本站的話,請收藏一下本站!