关于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的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
vue.js源代码core scedule.js学习笔记
Jul 03 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
JS基于贪心算法解决背包问题示例
Nov 27 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
vue-drawer-layout实现手势滑出菜单栏
Nov 19 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
详细探究Python中的字典容器
2015/04/14 Python
Python中list初始化方法示例
2016/09/18 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
深入浅出学习python装饰器
2017/09/29 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python3 元组tuple入门基础
2020/02/09 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
土木工程师岗位职责
2013/11/24 职场文书
2014年团工作总结
2014/11/27 职场文书
网吧员工管理制度
2015/08/05 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang