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的颜色选择插件实例代码
Oct 02 Javascript
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
基于jQuery实现的查看全文功能【实用】
Dec 11 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
用js实现放大镜效果
Oct 28 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
模仿OSO的论坛(五)
2006/10/09 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
原生js实现公告滚动效果
2021/01/10 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
深入浅析Python字符编码
2015/11/12 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
MYSQL支持事务吗
2013/08/09 面试题
仓库管理制度
2014/01/21 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
代理协议书
2014/04/22 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
爱国影片观后感
2015/06/18 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
mysql如何查询连续记录
2022/05/11 MySQL