关于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 DOM 添加事件
Feb 14 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
jQuery实现为控件添加水印文字效果(附源码)
Dec 02 Javascript
jQuery插件zTree实现获取一级节点数据的方法
Mar 08 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
mpvue小程序循环动画开启暂停的实现方法
May 15 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
Vue可自定义tab组件用法实例
Oct 24 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 版本]
2007/03/20 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
PHP静态成员变量
2017/02/14 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
wxPython学习之主框架实例
2014/09/28 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
python 绘制场景热力图的示例
2020/09/23 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
北大自主招生自荐信
2013/10/19 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2019各种承诺书范文
2019/06/24 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript