关于JavaScript的一些看法
2009-05-27 00:00
274 查看
众所周知,一句JS代码以分号结束和以回车符结束在浏览器中均能正常运行(至少在我的IE7中是这样)。不知道这是JS语言的特性或者仅仅是解释器的容错功能?由于回车符也可以是一句代码结束的标志,进行JS压缩的时候就麻烦些了。要压缩掉所有的回车符,程序就得知道哪里是一条语句的结束,并在结束位置后面添加上";"。这是一件不容易的事情(或许有容易的方法我还没想到吧),最后无赖我只好采取了一种折中的方法:保留必要的回车符,去掉";"、","、"+"等等分隔符前后的回车符。(要是JS也像C++等语言一样以";"结尾,那该是多么容易的一件事情!)
在开发的过程中,还发现一个比较奇怪的问题。如下面的代码所示:
上面的代码可以正常运行。
如果把第11行前的"\n"去掉,即程序变成:
则将不能正确运行,原因在于"= function(){...}"的"}"不能标志语句块结束。也就是说,整个"= function(){...}"仅仅是一条语句,如上所述,一条语句必须以回车符或者";"结束。这是和C/C++等又一重大区别。
介于此,建议大家以后写JS代码的时候还是在一句话后面加";"表示结束,以避免不必要的BUG。
PS:虽然JS很强大,但是它这些“缺点”真是让我没法喜欢上它。
在开发的过程中,还发现一个比较奇怪的问题。如下面的代码所示:
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很强大,但是它这些“缺点”真是让我没法喜欢上它。
相关文章推荐
- 关于android中ListView的Adapter如何设计能通用的一些看法
- 一些javascript中关于面向对象的连接
- 关于所谓U盘有占用空间,却看不到文件的一些看法
- Windows 2012 Hyper-V Step by Step (一) 关于虚拟化的一些看法
- 关于ssh公钥认证的一些看法
- 关于对谷歌规范链接的一些看法
- 关于代码学习的一些看法
- 关于IE和Firefox中javascript和css的一些区别
- 关于OpenStack的一些看法
- 关于WifiManager的一些看法
- 关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(一)
- 关于交通银行网银服务的一些看法
- 你必须知道的关于javascript的一些问题
- javascript 关于表单的一些validation
- 关于Socket与Http协议的一些总结以及部分个人看法
- 关于CSDN2013博客之星的一些看法
- javascript 中关于对象转换数字值的一些特点
- javascript 一些关于css操作的函数