当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript语句可以不以;结尾的烦恼

Javascript
12个最常见的CSS问题的javascript解决方案
JavaScipt布局网页的11个网页特效实例
6个设计优秀的下拉导航菜单效果
Webjx收集jquery实现动画效果的插件和教程
MooTools教程和资源(Webjx收集英文教程)
游戏人文件夹程序 ver 3.0
游戏人文件夹程序 ver 4.03
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
datePicker:日期选择控件(with jquery)
通过jquery实现tab标签浏览效果
js压缩利器
一个高效的JavaScript压缩工具 JSA 下载
User Scripts: Video Download by User Scripts
use jscript Create a SQL Server database
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
[原创]js循环输出图片,不足的要补0
[原创]js判断ie方法集锦(含正则)代码短小经典
利用404错误页面实现UrlRewrite的实现代码
[原创]js判断是否有中文的脚本_js判断中文方法集合
图片上传即时显示缩略图的js代码

Javascript 中的 JavaScript语句可以不以;结尾的烦恼


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 234 ::
收藏到网摘: n/a

JavaScript做为一个灵活的脚本语言,其成功是我们显而易见的。不过对于JavaScript语句可以不以";"结尾这点,我对其一直都耿耿于怀!这个特性除了带来语句的混乱,且使其依赖于代码排版(换行)外,我没有发现任何的优点。难道是为了可以少敲一个";"?! 如果习惯了C#、C/C++等的强制";",会更加的觉得郁闷。
同时这个特性对于JavaScript的debug来说,是灾难性的。下面这个语句是正确的吗?
if ( results == 'AdvancedTimeSelect' )
{
this.DoAdvancedTimeSelect();
// . . .
}
else ( results && results.length > 0 )
{
// . . .
}
// . . .
这是我在把"if"-"else"语句结构变成"if"-"else if"-"else"结构时,不小心写成的代码(漏加了一个if)。如果是在C#中等强制要求";"作语句结尾的语言中,这样语句就是一个明显的语法错误。
可是上面这段代码在JavaScript中却是没有任何语法问题的,同时也可以"正常的"运行。只是这个正常带来的副作用太让人郁闷了,当这段代码处于完整的一个功能模块中时,给debug带来无尽的混乱。虽然另外一个重要的原因也是自己的眼神不好,才写成这样,不过我还是要对JavaScript不强制要求语句以";"结尾的规定耿耿于怀!
上面代码的结果是如果第一个if条件成立,那么两个()和两个{}内的代码都执行。如果不成立,就执行else以后的代码,包括()和{}括起来的。因为JavaScript把( results && results.length > 0 )当成一个语句作为了else的分支,然后{}就是一个独立的语句集合了。