关于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 相关文章推荐
HTTP状态代码以及定义(解释)
Feb 02 Javascript
Javascript Object.extend
May 18 Javascript
jQuery实现的五子棋游戏实例
Jun 13 Javascript
解决JS请求服务器gbk文件乱码的问题
Oct 16 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 Javascript
Vue实现手机计算器
Aug 17 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实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP5.3新特性小结
2016/02/14 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
python利用拉链法实现字典方法示例
2017/03/25 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
python实现简单成绩录入系统
2019/09/19 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python底层封装实现方法详解
2020/01/22 Python
python生成大写32位uuid代码
2020/03/03 Python
python线程池如何使用
2020/05/28 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
2014年效能监察工作总结
2014/11/21 职场文书
2015年重阳节主持词
2015/07/04 职场文书
物业公司管理制度
2015/08/05 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
python微信智能AI机器人实现多种支付方式
2022/04/12 Python