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 相关文章推荐
判断对象是否Window的实现代码
Jan 10 Javascript
JS跨域代码片段
Aug 30 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
微信小程序上传文件到阿里OSS教程
May 20 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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 Memcached应用实现代码
2010/02/08 PHP
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
php ios推送(代码)
2013/07/01 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python 日期与时间转换的方法
2020/08/01 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
货代行业个人求职简历的自我评价
2013/10/22 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
数学教研活动总结
2014/07/02 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
同事去世追悼词
2015/06/23 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技