javascript的分号代表语句的结束符,但由于javascript具有分号自动插入规则,所以它是一个十分容易让人模糊的东西,在一般情况下,一个换行就会产生一个分号,但实际情况却不然,也就是说在javascript中换行可能产生分号,也可能不产生,是否自动插入分号,主要看上下行。所以即使是经验丰富的程序员,有时候也会头大。
在 ECMAScript 中对分号自动插入规则也有相应的解释:空语句,变量语句,表达式语句,do-while 语句,continue 语句,break 语句,return 语句,以及 throw 语句,这些确定的ECMAScript语句必须以分号结束。这些分号可以总是明确地出现在源代码文本中。为方便起见,在特定的情况下,源代码文本中的这些分号可以被省略。也就是说这些语句的结尾是不需要硬性的输入分号结尾,javascript会自动插入语句结束处。
想了解详细的ECMAScript分号自动插入规则可以查看以下链接:
原文
中文翻译
实践出真理,看一下下面这些例子,就明白,分号自动插入不是那么好让人捉摸的。稍微不注意就会让你头大。
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 //不会自动插入分号 a<b //不会自动插入分号 a++ ) {}
|
ECMAScript对以上也有解释:将分号解释为空语句和在for语句中的()中不自动插入分号是特例,是不属于自动插入规则管辖的。
javascript虽然是弱类型语言,ECMAScript的分号自动插入规则也让人难以理解透彻。但养成良好的代码书写习惯,手动插入分号,养成习惯,就能避免这些问题,同时会在程序调试,代码的阅读上对自己对他人都有不小的帮助。
同时ECMAScript还给程序员一些忠告:
++ 或 — 应和其操作数出现在同一行。
return 或 throw 语句中的表达式应和return 或 throw 出现在同一行。
break 或 continue 语句中的标签应和break 或 continue 出现在同一行。
本文链接:http://www.blueidea.com/tech/web/2009/7261.asp
分享到:
相关推荐
javascript大括号后面应使用分号吗?JS中function 的开头有加感叹号、分号是什么意思呢? Js多个文件集成成一个文件后,压缩代码时避免发生语法错误,可以如下处理 一、js 前加分号 例如:;(function($){…此处...
由于JavaScript会自动在某些语句末尾插入分号,如`return`语句,这可能导致意外的结果,例如`return {key: value;}`会被解析为`return undefined;`,而非预期的对象。因此,建议遵循规则1:表示区块起首的大括号不应...
3. 行结束和换行规则:虽然JavaScript允许省略分号(;),但在代码较长的情况下,以分号结束语句是一种推荐做法,以防在需要换行时产生意外错误。若需换行,建议选择在操作符和标点符号后进行,尤其是在逗号之后换行...
分号作为语句结束符虽然可选,但推荐使用,以防止因丢失分号导致的解析错误。 命名规则是另一个重要方面。变量、函数和对象的命名应清晰、有意义,遵循驼峰式命名(camelCase)或下划线分隔(snake_case)的约定。...
此外,语句末尾应使用分号,即使JavaScript引擎允许省略,但为了代码的清晰性和避免某些情况下的解析错误,仍建议始终使用分号。 3. **换行规则**:在操作符或标点符号后换行,尤其是逗号后,避免在变量名、字符串...
### JavaScript基础篇——浅谈cookie #### 一、引言 在Web开发中,如何保持用户的登录状态或记住用户的一些个性化设置是一个常见的需求。对于这种轻量级的数据存储需求,`cookie`是一种非常实用的技术。它能够帮助...
最基础的是语法错误(SyntaxError),这是由于代码不符合JavaScript语法规则而引发的,例如拼写错误、遗漏的括号或分号等。运行时错误(TypeError)则是因为尝试对非预期类型的数据执行操作,如调用非函数类型的值。...
各特性之间用分号分隔。 例如,创建一个宽度为400像素,高度为300像素,居中显示,有滚动条且不可调整大小的模态对话框,可以这样设置: ```javascript window.showModalDialog('dialog.html', null, 'dialogWidth...
在软件开发中,良好的编程习惯至关重要,因为它们直接影响到代码的可读性、可维护性和性能。... 1. **语句结尾要使用...尽管本文主要以PHP为例,但这些原则同样适用于其他编程语言,如Java、JavaScript等Web编程语言。
写入时,需要将键值对和属性以分号分隔,读取则需要解析字符串。以下是一些基本操作示例: ```javascript function setCookie(name, value, days) { var date = new Date(); date.setTime(date.getTime() + (days...
Eric Meyer,作为前端开发界的知名人物,对CSS的讲解和理解深入浅出,具有很高的参考价值。CSS(Cascading Style Sheets,层叠样式表)是一种用来表现HTML或XML文档的样式的语言。它不仅可以静态地修饰网页,还可以...