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+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
JS+CSS实现六级网站导航主菜单效果
Sep 28 Javascript
浅谈javascript基础之客户端事件驱动
Jun 10 Javascript
jQuery插件扩展测试实例
Jun 21 Javascript
js编写的treeview使用方法
Nov 11 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
Jun 28 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
说说如何在Vue.js中实现数字输入组件的方法
Jan 08 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
vue更改数组中的值实例代码详解
Feb 07 Javascript
vue3使用vuedraggable实现拖拽功能
Apr 06 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php通过各种函数判断0和空
2020/07/04 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
vue.js表格分页示例
2016/10/18 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
元旦寄语大全
2014/04/10 职场文书
2014最新离职证明范本
2014/09/12 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
电力培训学习心得体会
2016/01/11 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS