关于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实现的一个计算数字步数的算法分享
Dec 06 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
Bootstrap模态框调用功能实现方法
Sep 19 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
Dec 28 Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
webpack4+express+mongodb+vue实现增删改查的示例
Nov 08 Javascript
JavaScript 面向对象基础简单示例
Oct 02 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 session会话的安全性分析
2011/09/08 PHP
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
2014年调度员工作总结
2014/11/19 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
民事起诉状范文
2015/05/19 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS