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判断浏览器类型的方法
Aug 07 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
Mar 01 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
jQueryUI Sortable 应用Demo(分享)
Sep 07 jQuery
JS简单实现点击跳转登陆邮箱功能的方法
Oct 31 Javascript
了解JavaScript表单操作和表单域
May 27 Javascript
Vue插件之滑动验证码用法详解
Apr 05 Javascript
swiper自定义分页器的样式
Sep 14 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
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 CURL模拟GET及POST函数代码
2010/04/25 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php组合排序简单实现方法
2016/10/15 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
简单介绍Python中的readline()方法的使用
2015/05/24 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
pandas string转dataframe的方法
2018/04/11 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
python使用配置文件过程详解
2019/12/28 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
歌唱比赛主持词
2014/03/18 职场文书
好听的队名和口号
2014/06/09 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
Python中如何处理常见报错
2022/01/18 Python
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
python使用shell脚本创建kafka连接器
2022/04/29 Python