关于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替换table中的内容并显示进度条的代码
Aug 02 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
Dec 26 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
JQuery对ASP.NET MVC数据进行更新删除
Jul 13 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 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
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
微信JSSDK上传图片
2015/08/23 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python lxml模块安装教程
2015/06/02 Python
Python基于select实现的socket服务器
2016/04/13 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python开发前景如何
2020/06/11 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
机械专业求职信范文
2014/07/15 职场文书
化学工程专业求职信
2014/08/10 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
SQL Server实现分页方法介绍
2022/03/16 SQL Server