关于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中的稀疏数组与密集数组[译]
Sep 17 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
Aug 25 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
Jan 22 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
封装好的javascript前端分页插件pagination
Jan 04 Javascript
vue自定义指令实现v-tap插件
Nov 03 Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
Web技术实现移动监测的介绍
Sep 18 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
小程序点击图片实现自动播放视频
May 29 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
Python实现EM算法实例代码
2020/10/04 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
中学生评语大全
2014/04/18 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python