关于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 Event对象详解及使用示例
Nov 22 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
jQuery知识点整理
Jan 30 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
原生JS实现匀速图片轮播动画
Oct 18 Javascript
AngularJS自定义指令详解(有分页插件代码)
Jun 12 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
Vue的编码技巧与规范使用详解
Aug 28 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
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
$()JS小技巧
2007/07/21 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python正则表达式实例代码
2020/03/03 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
农业资源与环境专业自荐信范文
2013/12/30 职场文书
最热门的自我评价
2013/12/30 职场文书
技术总监管理职责范本
2014/03/06 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
小学见习报告
2014/10/31 职场文书
诚信承诺书
2015/01/19 职场文书
销售辞职信范文
2015/03/02 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书