关于JavaScript的一些看法

 更新时间:2009年05月27日 17:18:00   作者:  
最近在写一个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很强大,但是它这些“缺点”真是让我没法喜欢上它。

相关文章

  • 在IE上直接编辑网页内容的js代码(IE地址栏js)

    在IE上直接编辑网页内容的js代码(IE地址栏js)

    在IE上直接编辑网页内容
    2009-04-04
  • js实现超级玛丽小游戏

    js实现超级玛丽小游戏

    这篇文章主要为大家详细介绍了js实现超级玛丽小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 微信小程序中wxs文件的一些妙用分享

    微信小程序中wxs文件的一些妙用分享

    wxs相当于一个独立模块,相当于一个独立出来的module对象,通过module.exports向外暴露,在文件中引入即可使用,下面这篇文章主要给大家介绍了关于微信小程序中wxs文件的一些妙用,需要的朋友可以参考下
    2022-01-01
  • JS利用正则表达式实现简单的密码强弱判断实例

    JS利用正则表达式实现简单的密码强弱判断实例

    这篇文章主要给大家介绍了关于JS利用正则表达式实现简单的密码强弱判断的相关资料,实现后的效果非常简单,但也挺实用的,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-06-06
  • JavaScript合并两个数组并去除重复项的方法

    JavaScript合并两个数组并去除重复项的方法

    这篇文章主要介绍了JavaScript合并两个数组并去除重复项的方法,涉及javascript操作数组的合并与去重的相关技巧,需要的朋友可以参考下
    2015-06-06
  • FF IE兼容性的修改小结

    FF IE兼容性的修改小结

    FF IE兼容性的修改小结,大家以后在javascript的编写过程中需要注意下。
    2009-09-09
  • uniapp定义动画的几种方式总结

    uniapp定义动画的几种方式总结

    我们都知道,动画其实是由一帧一帧图片组成,快递地播放一组图片就形成了动画,下面这篇文章主要给大家介绍了关于uniapp定义动画的几种方式,需要的朋友可以参考下
    2023-02-02
  • 深入理解JavaScript的值传递和引用传递

    深入理解JavaScript的值传递和引用传递

    JavaScript有5种基本的数据类型,分别是:布尔、null、undefined、String和Number。这篇文章主要介绍了JavaScript的值传递和引用传递,需要的朋友可以参考下
    2018-10-10
  • JavaScript实现旋转木马轮播图

    JavaScript实现旋转木马轮播图

    这篇文章主要为大家详细介绍了JavaScript实现旋转木马轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • echarts实现晶体球面投影的实例教程

    echarts实现晶体球面投影的实例教程

    这篇文章主要给大家介绍了关于echarts实现晶体球面投影的相关资料,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论