热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【JavaScript从零开始】语言核心部分可选的分号

Node.js很是火爆,前段待遇好的飞起。。。。

于是我决定....

重头开始学习Javascript
有些比较特别的,或者之前我们注意到,再或者容易出错
东西我会记录下来。

 

 

可选的分号

和其他许多编程语言一样,Javascript 使用分号(;)将语句分隔开的。这对增强代码的可读性和整洁性非常重要。

缺少分割符,一条语句的结束就成了下一跳语句的开始,反之亦然。

在Javascript中,如果语句个独自占一行,通常可以省略语句之间的分号(程序结尾或又花括号"}"之前的分号也可以省略)。

许多JavaSritpt程序员使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。

我也建议大家这样做。

如下代码,

a=3;
b=4;
//因为两条语句用两行书写,第一个分号是可以省略掉的
a=3;b=4;
//如果在一行,第一个分号则不能省略

 

需要注意的是,Javascript并不是所有的换行都要填补分号,只有缺少了分号就无法正确解析代码的时候,Javascript才会填补分号。

var a
a
=
3
console.log(a)
//Javascript将其解析为: 
var a;  a=3;  console.log(a)

 

看如下的例子,

 

var y=x+f
(a+b).toString()

//第二行的圆括号与第一行的f 组成一个函数调用
//Javascript 会解析成

var y=x+f(a+b).toString();

而上面的代码本意却不是这样的。分号还是不要省略的好。

通常来讲,如果一条语句以 "("、"[" 、"/" 、"+" 或者 “-” 开始,那么它极有可能和前一条语句在一起解析。

以"/" 、"+" 或者 “-” 开始的语句并不常见,而以 "("、"["  开始的语句则非常常见,至少在一些JaveScript编码风格中是很普遍的。

有些程序员喜欢保守的在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确解析:

var x=0 //这里省略了分号
;[x,x+1,x+2].forEach(console.log)//前面的分号保证了正确的语句解析

 

如果当前语句和下一行语句无法合并解析,Javascript则在第一行后填补分号,这是通用的规则,但有两个例外。

第一个例外是在涉及return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,Javascript则会在换行处填补分号。

例如:

return 
ture;
//Javascript会解析成:
return ;  true;
//而代码本意是这样的:
return   true;

 

第二个例外是在涉及"++"和"--"运算符的时候。

这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。

如果将其用作后缀表达式,他和表达式应当咋同一行。

否则,行尾将填补分号,同事""++或"--"将会作为下一行代码的前缀操作符并与之以前解析。

例如:

x
++
y
//这段代码解析为" x;++y"而不是 "x++;y" 

 

 

最后还是提醒大家 使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。

如果你觉得有点用处还请推荐一下。

 


推荐阅读
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
author-avatar
The_Fuck_566
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有