关于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 相关文章推荐
jQuery的链式调用浅析
Dec 03 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
js怎么覆盖原有方法实现重写
Sep 04 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
JavaScript动态添加事件之事件委托
Jul 12 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
vue项目实战总结篇
Feb 11 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
广告切换效果(缓动切换)
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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
Safari5中alert的无限循环BUG
2011/04/07 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python中__name__的使用实例
2015/04/14 Python
python生成IP段的方法
2015/07/07 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
python 中的int()函数怎么用
2017/10/17 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
什么是.net
2015/08/03 面试题
小车司机岗位职责
2013/11/25 职场文书
半年思想汇报
2013/12/30 职场文书
《观舞记》教学反思
2014/04/16 职场文书
文化产业实施方案
2014/06/07 职场文书
营销学习心得体会
2014/09/12 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏