JS教程:浅谈ECMAScript自动插入分号

2016-02-20 01:09 12 1 收藏

下面是个简单易学的JS教程:浅谈ECMAScript自动插入分号教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

javascript分号代表语句的结束符,但由于javascript具有分号自动插入规则,所以它是一个十分容易让人模糊的东西,在一般情况下,一个换行就会产生一个分号,但实际情况却不然,也就是说在javascript中换行可能产生分号,也可能不产生,是否自动插入分号,主要看上下行。所以即使是经验丰富的程序员,有时候也会头大。

在 ECMAScript 中对分号自动插入规则也有相应的解释:空语句,变量语句,表达式语句,do-while 语句,continue 语句,break 语句,return 语句,以及 throw 语句,这些确定的ECMAScript语句必须以分号结束。这些分号可以总是明确地出现在源代码文本中。为方便起见,在特定的情况下,源代码文本中的这些分号可以被省略。也就是说这些语句的结尾是不需要硬性的输入分号结尾,javascript会自动插入语句结束处。

想了解详细的ECMAScript分号自动插入规则可以查看以下链接:

原文 中文翻译

实践出真理,看一下下面这些例子,就明白,分号自动插入不是那么好让人捉摸的。稍微不注意就会让你头大。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

return引起的血案

function test(){
   var a = 1;
   var b = 2;
   return //会自动插入分号
       (
         a+b
       )
};
alert(test());

一个返回a+b值的函数,初看没任何问题,但运行alert的结果却是undefined。根据分号的自动插入规则,return 语句后面如果有换行就会自动插入分号,没有返回值也就比较好理解了。如果需要换行的话,可以这样:

function test(){
   var a = 1;
   var b = 2;
   return (
           a+b
          )
};
alert(test());

两个闭包引起的血案

(function (){
  var a;
})() //不会自动插入分号
(function (){
  var b;
})()

很诡异,解释不了,谁能告诉我~

for语句头中的两个分号,不自动插入分号

for( var a=1,b=10 //不会自动插入分号
         ab //不会自动插入分号
         a++
   )
{}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

ECMAScript对以上也有解释:将分号解释为空语句和在for语句中的()中不自动插入分号是特例,是不属于自动插入规则管辖的。

javascript虽然是弱类型语言,ECMAScript的分号自动插入规则也让人难以理解透彻。但养成良好的代码书写习惯,手动插入分号,养成习惯,就能避免这些问题,同时会在程序调试,代码的阅读上对自己对他人都有不小的帮助。

同时ECMAScript还给程序员一些忠告:

++ 或 应和其操作数出现在同一行。 return 或 throw 语句中的表达式应和return 或 throw 出现在同一行。 break 或 continue 语句中的标签应和break 或 continue 出现在同一行。

来源:http://www.tulaoshi.com/n/20160220/1633385.html

延伸阅读
标签: Web开发
最近我做一个员工注册页面, 有一项是注册公司, 但是如果公司已经被注册, 要求公司名称写的完全一样, 不能有大小写区别等, 所以我打算使用Javascript写一个模拟自动完成的功能, 样式仿照了IE7的, 还有很多不足, 希望大家支持. 自动完成功能 [Ctrl+A 全选 注:如需引入外部J...
标签: ASP
最近网上流行着一些采集程序,更多人拿着这些东西在网上叫卖,很多不太懂的人看着那些程序眼羡,其实如果你懂一些ASP,了解自动采集程序的原理后,你会感觉实现自动化也是那么的简单. 原理及优点:通过XML中的XMLHTTP组件调用其它网站上的网页,然后批量截取或替换原有的信息使其转化成变量后再一一储存到数据库中。其主要的优点便是无需再手工添加大...
标签: Web开发
相信你阅读过大量关于编写css时应该注意的一些细节来控制css文件的大小,比如:全局样式、继承样式、缩写样式,空格、注释等;同时你也可能用过对你的css文件进行压缩,来减少css文件的大小,但压缩后的css文件在可维护性、识别性方面变的特别弱!更复杂的情况是,如果你的页面里面引用了多个css、多个js文件你又会怎样处理? 以下给我们介...
PowerPoint如何自动在每页插入图片 第一、打开PPT2010版本,点击插入菜单。 第二、当打开插入菜单后,找到相册快捷按钮,然后单击。 第三、当打开相册对话框后,点击文件/磁盘按钮。 第四、打开插入新图片对话框后,点击查找范围下拉列表,找到你需要插入的图片。 第五、选中图片(可以多张),然后点击插...
标签: Web开发
一如往常,demo和源码的zip包在文章最后,慢慢欣赏吧! 我觉得我有必要写这个教程,因为曾经见到的大部分关于自动完成的应用程序都只是给你一个程序源码包,然后告诉你怎么使用,而不是告诉你它是如何工作的以及为什么这样做。而知道这些可以让你对这个插件可以进一步的按自己的需求定制(关于这一点我在我的blog里写过不少关于其他应用的...

经验教程

329

收藏

84
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部