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 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
js function定义函数使用心得
Apr 15 Javascript
Jquery插件写法笔记整理
Sep 06 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
Aug 04 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
JavaScript对象原型链原理解析
Jan 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实现读取和编写XML DOM代码
2010/04/07 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
python网络爬虫采集联想词示例
2014/02/11 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
人事助理自荐信
2014/02/02 职场文书
体育馆的标语
2014/06/24 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015年招生工作总结
2015/05/04 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书