关于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的$getjson调用并获取远程的JSON字符串问题
Dec 10 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
如何在selenium中使用js实现定位
Aug 18 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
jquery实现submit提交表单
2015/02/03 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
python2.7安装图文教程
2018/03/13 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python 模拟登录B站的示例代码
2020/12/15 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
大学竞选班长演讲稿
2014/04/24 职场文书
生物工程专业求职信
2014/09/03 职场文书
信用卡工资证明格式
2014/09/13 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
高一作文之暖冬
2019/11/09 职场文书