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

Javascript
javascript模仿msgbox提示效果代码
javascript table美化鼠标滑动单元格变色
告诉大家什么是JSON
json 定义
json跟xml的对比分析
jQuery实用技巧
JQuery实现自定义对话框的代码
强烈推荐240多个jQuery插件提供下载
豆瓣网的jquery代码实例
使用 JavaScript 创建可维护的幻灯片效果代码
动感超强的JS图片轮换特效
一个小型js框架myJSFrame附API使用帮助
Javascript入门学习第二篇 js类型
Javascript入门学习第三篇 js运算
Javascript入门学习第四篇 js对象和数组
jQuery基础教程笔记适合js新手
图片自动缩小 点击放大
非常不错的功能强大代码简单的管理菜单美化版
js 新浪的一个图片播放图片轮换效果代码
javascript import css实例代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 211 ::
收藏到网摘: 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的分支,然后{}就是一个独立的语句集合了。