1.省略dim,方便但也是隐患! 2.函数内申明的变量不会干扰外部的变量! response.Write a & "<br>" 结果显示函数内部申明的变量是不会干扰外面的,它的作用域就是函数内部,其实学过其他语言的都应该知道!但要先声明,如果把函数内的dim a去掉的话,那就把那个a认为是外部的a,结果就变了!文件里面申请的变量,他的作用域就是这个文件。 3.让人又爱又恨的include! 现在来讨论更复杂的情况,如果你include两个文件进来,在这两个文件中都有同一个变量名,如果两个都用dim申请的话,还好,就只是报错,说变量名已经存在了,很快就能知道问题了。现在你可以理解我为什么讲第二点的作用域了,由于作用域,不同文件同名变量一般情况下不会“打架”。但是,如果被另一个文件同时include进来,问题就麻烦了,所以如果你写的asp文件是准备被包含的,请防止同名的情况发生。再回到原来的讨论,如果两个include文件中申请同名变量都dim还好,但是后包含文件是用省略dim申请,问题就来了,后面的省略dim申请成赋值了,要命的是,这是在两个include文件中,很隐蔽,查找问题更困难! 综上所述,大家可以写一些简单的例子来体会体会其中的问题,最后建议: ***现在讲讲查错: 事实上,寻找问题比代码编写更重要!我个人经验,问题分三类: 2.逻辑类,比较讨厌的问题,程序编译成功,也能运行,不过显示的结果不是你逻辑中期望的结果。oh, my god!怎么办,没有提示信息,只能凭经验和感觉去分析错误的结果,然后查源代码,顺利的话,几分钟解决,难缠的一天下来也没结果! 3.性能类,很可怕的问题,程序编译成功,也能正常运行,显示也正常!但是,偶尔隔段时间给你来个错误,你根本不知道错误是在什么情况下触发的,或者程序性能不如同类程序的高,运行慢,这些问题,有些一个星期一个月能解决了,有的几乎就是顽疾,治不好。我就曾经被这种问题折腾的死去活来! 所以,要想学好编程,就要尝试自己解决问题,尤其象ASP程序,逻辑方面出问题的情况不大,出的问题基本都是报错类的,有出错信息,出错位置,自己分析分析应该不难解决。我看有些人愿意在论坛上花个三天等别人告诉自己问题,为什么自己不去解决呢?自己查到一个问题,就长了一分经验,这才是程序员的财富! ***一点程序员的心得: 对于第一个问题,我强烈建议大家使用变量前用Dim定义一下,多写一行代码并不是很困难的事。然后在ASP文件头部用<%Option Explicit%>,这样,如果不小心把变量名写错,就会返回变量没有定义的错误,就可以很容易地查出错误位置,否则,该变量就是一个Null值。 另外,结合Option Explicit说一下第二个问题。有时候我们需要包含多个文件(比如head定义、顶部导航等代码),而Option Explicit在一个ASP Application(注意这里是说application,特指一次应用,而不是page,不表示一个页面)只能用一次。所以,Option Explicit最好不要放在include文件内部,以免被多个页面多次调用引起混乱。 再说一个关于 include 的小问题。一般,如果需要包含的文件就在当前目录内,我们可以直接用 来包含它。但是,很多时候我们有N个需要包含的文件。于是,为了方便管理,我们将它们统一放在一个INC或include目录内。这样,有时候包含代码就写成了: 这就是我要讨论的问题。请注意,使用..可以访问上层目录,由于而带来一个安全隐患:用户有可能非法引用站点外部文件。基于这个理由,Microsoft 发布的 IIS Lockdown 工具屏蔽了这个引用方法,并且 Microsoft 在 Windows Server 2003 的 IIS6.0 上默认是屏蔽这种方式的。对于这种不在本目录内的包含文件,推荐使用这种安全的引用方法: 欢迎更多有益的探索和讨论 |
温馨提示:喜欢本站的话,请收藏一下本站!