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


Posted in Javascript onMarch 08, 2007

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的分支,然后{}就是一个独立的语句集合了。

Javascript 相关文章推荐
jQuery的强大选择器小结
Dec 27 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
浅谈JQ中mouseover和mouseenter的区别
Sep 13 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
js实现简单进度条效果
Mar 25 Javascript
JScript中的"this"关键字使用方式补充材料
Mar 08 #Javascript
function, new function, new Function之间的区别
Mar 08 #Javascript
JavaScript中this关键字使用方法详解
Mar 08 #Javascript
区分JS中的undefined,null,"",0和false
Mar 08 #Javascript
在JavaScript中使用inline函数的问题
Mar 08 #Javascript
JS类中定义原型方法的两种实现的区别
Mar 08 #Javascript
JavaScript语言中的Literal Syntax特性分析
Mar 08 #Javascript
You might like
php调用mysql存储过程
2007/02/14 PHP
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
PHP查询分页的实现代码
2017/06/09 PHP
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
总结Python编程中函数的使用要点
2016/03/20 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
pycharm安装和首次使用教程
2018/08/27 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
护理中职生求职信范文
2014/02/24 职场文书
担保书范文
2015/01/20 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
余世维讲座观后感
2015/06/11 职场文书
校园新闻稿范文
2015/07/18 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书