当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 关于JavaScript的一些看法

Javascript
javascript手冊-r
javascript手冊-m&n
javascript手冊-p&q
javascript手冊-t
javascript手冊-e
javascript手冊总纲
javascript手冊-b
javascript手冊-a
JavaScript 实现动态增加、删除表单域
JavaScript:一个鼠标动态跟随文字特效的示例
如何使用可以接受输入的列表框
想让您的桌面文字背景透明吗?
淡出淡入 Script
OpenGL Step by Step
看看你的状态栏有什么在动??
自定义 IE 鼠标右键弹出式
抓住网页恶意代码的"黑手"
一个javascript脚本写的俄罗斯方块
检查指定Text输入框的值是否是数值型数据
将sTableName表中的sFieldNameArr数组字段数据根据条件sWhere加载到selName

Javascript 中的 关于JavaScript的一些看法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 163 ::
收藏到网摘: n/a

最近在写一个JS代码压缩工具的时候,感受到JS的强大,同时也让我头疼的一阵子(谁叫我是JS菜鸟)。 众所周知,一句JS代码以分号结束和以回车符结束在浏览器中均能正常运行(至少在我的IE7中是这样)。不知道这是JS语言的特性或者仅仅是解释器的容错功能?由于回车符也可以是一句代码结束的标志,进行JS压缩的时候就麻烦些了。要压缩掉所有的回车符,程序就得知道哪里是一条语句的结束,并在结束位置后面添加上";"。这是一件不容易的事情(或许有容易的方法我还没想到吧),最后无赖我只好采取了一种折中的方法:保留必要的回车符,去掉";"、","、"+"等等分隔符前后的回车符。(要是JS也像C++等语言一样以";"结尾,那该是多么容易的一件事情!)
在开发的过程中,还发现一个比较奇怪的问题。如下面的代码所示:
复制代码 代码如下:

1<body>
2
3<script>
4
5function class1(){};
6
7class1.prototype.ShowMessage = function ShowMsg()
8{
9 alert("ShowMsg Function!");
10}
11var test = new class1();
12test.ShowMessage();
13</script>
14
15</body>

上面的代码可以正常运行。
如果把第11行前的"\n"去掉,即程序变成:
复制代码 代码如下:

1<body>
2
3<script>
4
5function class1(){};
6
7class1.prototype.ShowMessage = function ShowMsg()
8{
9 alert("ShowMsg Function!");
10} var test = new class1();
11test.ShowMessage();
12</script>
13
14</body>

则将不能正确运行,原因在于"= function(){...}"的"}"不能标志语句块结束。也就是说,整个"= function(){...}"仅仅是一条语句,如上所述,一条语句必须以回车符或者";"结束。这是和C/C++等又一重大区别。
介于此,建议大家以后写JS代码的时候还是在一句话后面加";"表示结束,以避免不必要的BUG。
PS:虽然JS很强大,但是它这些“缺点”真是让我没法喜欢上它。