关于JavaScript的一些看法


Posted in Javascript onMay 27, 2009

众所周知,一句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很强大,但是它这些“缺点”真是让我没法喜欢上它。
Javascript 相关文章推荐
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
浅谈Webpack多页应用HMR卡住问题
Apr 24 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
redux处理异步action解决方案
Mar 22 Javascript
三步搞定:Vue.js调用Android原生操作
Sep 07 Javascript
广告切换效果(缓动切换)
May 27 #Javascript
js 图片缩放(按比例)控制代码
May 27 #Javascript
图片上传即时显示缩略图的js代码
May 27 #Javascript
JavaScript 闭包深入理解(closure)
May 27 #Javascript
jQuery 剧场版 你必须知道的javascript
May 27 #Javascript
javascript 日期时间函数(经典+完善+实用)
May 27 #Javascript
jquery cookie插件代码类
May 26 #Javascript
You might like
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
php的memcache类分享(memcache队列)
2014/03/26 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
Django-migrate报错问题解决方案
2020/04/21 Python
怎么处理XML的中文问题
2015/03/26 面试题
体育教师工作总结的自我评价
2013/10/10 职场文书
家长会演讲稿范文
2014/01/10 职场文书
领导接待方案
2014/03/13 职场文书
手机银行营销方案
2014/03/14 职场文书
心理学专业求职信
2014/06/16 职场文书
写得不错的求职信范文
2014/07/11 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
政风行风评议心得体会
2014/10/21 职场文书
家属答谢词
2015/01/05 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
护理培训心得体会
2016/01/22 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js