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 相关文章推荐
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
javascript中的undefined和not defined区别示例介绍
Feb 26 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
JS实现的二叉树算法完整实例
Apr 06 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
vue和小程序项目中使用iconfont的方法
May 19 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
详解vue配置后台接口方式
2019/03/29 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
python实现识别相似图片小结
2016/02/22 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Python列表推导式实现代码实例
2020/09/09 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
优秀管理者获奖感言
2014/02/17 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
运动会通讯稿600字
2015/07/20 职场文书
开学第一天的感想
2015/08/10 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python