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 相关文章推荐
JavaScript 不只是脚本
May 30 Javascript
用cssText批量修改样式
Aug 29 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
Aug 18 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
Jquery的Ajax技术使用方法
Jan 21 jQuery
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP7 新增功能
2021/03/09 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
javascript数组去重小结
2016/03/07 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python生成随机数的方法
2014/01/14 Python
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python基础教程之异常详解
2019/01/10 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python中bisect的用法及示例详解
2020/07/20 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
网络教育自我鉴定
2013/11/01 职场文书
网页设计个人找工作求职信
2013/11/28 职场文书
创新比赛获奖感言
2014/02/13 职场文书
优秀食品类广告词
2014/03/19 职场文书
请假条的格式
2014/04/11 职场文书
综合实践活动总结
2014/05/05 职场文书
美术课外活动总结
2014/07/08 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
解决vue中provide inject的响应式监听
2022/04/19 Vue.js