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 相关文章推荐
异步加载script的代码
Jan 12 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
大白话讲解JavaScript的Promise
Apr 06 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
微信小程序实现MUI数字输入框效果
Jan 31 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 Javascript
Python版实现微信公众号扫码登陆
May 28 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 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
咖啡常见的种类
2021/03/03 新手入门
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
eclipse php wamp配置教程
2016/06/30 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
婴儿地球:Baby Earth
2018/12/25 全球购物
银行求职信个人范文
2013/12/16 职场文书
毕业寄语大全
2014/04/09 职场文书
企业晚会策划方案
2014/05/29 职场文书
员工生日活动方案
2014/08/24 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
校园安全教育心得体会
2016/01/15 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL