JavaScript做为一个灵活的脚本语言,其成功是我们显而易见的。不过对于JavaScript语句可以不以";"结尾这点,我对其一直都耿耿于怀!这个特性除了带来语句的混乱,且使其依赖于代码排版(换行)外,我没有发现任何的优点。难道是为了可以少敲一个";"?! 如果习惯了C#、C/C++等的强制";",会更加的觉得郁闷。
同时这个特性对于JavaScript的debug来说,是灾难性的。下面这个语句是正确的吗?
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332516/20241017/cad09b37a82c4640a8752aaa4566ee11.gif)
这是我在把"if"-"else"语句结构变成"if"-"else if"-"else"结构时,不小心写成的代码(漏加了一个if
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332583/20241017/b08b2be46e544587be776b2e2786a546.gif)
可是上面这段代码在JavaScript中却是没有任何语法问题的,同时也可以"正常的"运行。只是这个正常带来的副作用太让人郁闷了,当这段代码处于完整的一个功能模块中时,给debug带来无尽的混乱。虽然另外一个重要的原因也是自己的眼神不好
![](https://ucc.alicdn.com/as2av5j4oozzu/developer-article332517/20241017/194b5607118241d683cdb78ec4dd2963.gif)
上面代码的结果是如果第一个if条件成立,那么两个()和两个{}内的代码都执行。如果不成立,就执行else以后的代码,包括()和{}括起来的。因为JavaScript把( results && results.length > 0 )当成一个语句作为了else的分支,然后{}就是一个独立的语句集合了。
本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。