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里写一个swing把数据插入数据库
Dec 10 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
Aug 11 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
js匿名函数使用&传参(实例)
Sep 08 Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
Sep 27 Javascript
解决Can't find variable: SockJS vue项目的问题
Sep 22 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
PHP中str_replace函数使用小结
2008/10/11 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
python三大神器之fabric使用教程
2019/06/10 Python
python 获取等间隔的数组实例
2019/07/04 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
sklearn的predict_proba使用说明
2020/06/28 Python
Django配置跨域并开发测试接口
2020/11/04 Python
工程建设实施方案
2014/03/14 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
个人事迹材料范文
2014/12/29 职场文书