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 相关文章推荐
js玩一玩WSH吧
Feb 23 Javascript
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
Sep 17 Javascript
AngularJS使用angular-formly进行表单验证
Dec 27 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 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
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
使用Python实现画一个中国地图
2019/11/23 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
会计学自我鉴定
2014/02/06 职场文书
财产保全担保书范文
2014/04/01 职场文书
学生打架检讨书
2014/10/20 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python