关于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 相关文章推荐
js获取图片长和宽度的代码
Nov 24 Javascript
JavaScript的public、private和privileged模式
Dec 28 Javascript
jquery radio 操作代码
Mar 16 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
jQuery选择器querySelector的使用指南
Jan 23 Javascript
javascript白色简洁计算器
May 04 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
详解JS预解析原理
Jun 16 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 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
学习使用PHP数组
2006/10/09 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
destoon官方标签大全
2014/06/20 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
python3.0 字典key排序
2008/12/24 Python
Python魔术方法详解
2015/02/14 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
关于VPN
2012/06/10 面试题
售后服务承诺书
2014/03/26 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
品德与社会教学反思
2016/02/24 职场文书