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 相关文章推荐
namespace.js Javascript的命名空间库
Oct 11 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
js实现彩色条纹滚动条效果
Mar 15 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
Aug 16 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 Javascript
JavaScript流程控制(分支)
Dec 06 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
967 个函式
2006/10/09 PHP
图书管理程序(三)
2006/10/09 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
js和jquery中获取非行间样式
2017/05/05 jQuery
JS中定位 position 的使用实例代码
2017/08/06 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
详解python运行三种方式
2019/05/13 Python
python中的句柄操作的方法示例
2019/06/20 Python
Python实现12306火车票抢票系统
2019/07/04 Python
python list转置和前后反转的例子
2019/08/26 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
运动会通讯稿300字
2014/02/02 职场文书
职工趣味运动会方案
2014/02/10 职场文书
家属慰问信
2015/02/14 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
小学教师读书笔记
2015/07/01 职场文书
学习委员竞选稿
2015/11/20 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang