编写js语句结束时保持良好的习惯-源于身边例子
记录以下信息,源于一件事情,一位同事,每次我改他的js代码,发现语句结束都不使用分号作为结束。长长的一串,读起来比较吃力。
即便语句的结束不使用分号结束,代码仍然不会报错,正常运行,所以不少程序员懒得去管这个。
使用分号有两个好处:1、其他人读你的代码可读性好。2、减少不必要的语法错误。在互联网为了减少带宽,压缩js的文件并成一行,不会出问题(看jquery
压缩版就知道压缩后的js是并在一行的)。其实我还发现,当使用代码编辑器进行格式化源码的时候,可以避免问题
看下面代码:
..............前面代码
}) //这里作为语句结束,应该有个分号
return false //这里也要有分号,不加其实不会报错
}
.....后续代码
看最后的"})"应该要以分号结束语句
-----------------------------------------------
js语句的结束符规律
-----------------------------------------------
如果不使用分号结束,在某些情况下是可行的。因为js解析器会去判断此行(在这里就是"})"所在的行),是否会有后续代码,如果没有。就默认语句结束(也就是把空的当成语句结束)。
js解析器会把新行当成新的代码语句。如果有后续呢?这样子就把后面代码也当成同一句进行处理。所以最好是养成写分号作为语句结束符的习惯。为了节省网络带宽,提高网站速度,当需要压缩js脚本的时候。就会把所有的代码并到一行,这样的情况下,如果没有分号,就无法明确知道语句的结束了,就会出现语法错误
看下面代码:
....
}) //这里本来是语句结束符,不加分号";"也不会报错,原因是后面没有任何内容了,所以js解析器会自动把这里当成语句结束
var userid = "{$_userid}";
如果压缩js代码,就会变成如下:
...})var userid = "{$_userid}";
出现语法错误。
归纳:养成一个语句结束加";"的习惯是很好的,可以避免很多问题
编写js语句结束时保持良好的习惯-源于身边例子的更多相关文章
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】
原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...
- JS 语句
JS 语句 JavaScript 语句 JavaScript 语句向浏览器发出的命令.语句的作用是告诉浏览器该做什么. 下面的 JavaScript 语句向 id="demo" 的 ...
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!
原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...
- JS语句
JS语句包括: 1.顺序语句 2.分支语句: if...else switch...case 3.循环语句 一.先看顺序语句: </body> < ...
- 关于js语句的分号
我在使用js的时候可能发现一个现象:js语句结尾有时候有分号,有时候没有,没有的时候js代码也是能正确执行的. 到底要不要写分号?QAQ 转自博客园@winter-cn JavaScript自动加分号 ...
- c-lodop云打印实现手机打印 JS语句打印
Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...
- 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...
- 用JS遍历循环时覆盖了之前的值
使用js遍历Echarts时,三个数据项,七个分类,遍历如下, 其他都没有问题,就是series.data里的数据只加载了一组,控制台显示数组的长度是7,可是下面的数据只有一个 发现把给数据项赋值的语 ...
- legend---十二、js中的js语句和函数和ready函数的关系是什么
legend---十二.js中的js语句和函数和ready函数的关系是什么 一.总结 一句话总结: 函数和全局变量不必放到ready函数中 语句(调用函数和全局变量)的必须放到ready函数中 1.在 ...
随机推荐
- SharePoint 2013怎样创建Wiki库
们使用Wiki页面来分享知识,增进团队合作.下面我将向大家展示SharePoint 2013 Wiki的使用方法.教程我都将以这张Wiki页面(即当前页)为示例. 编辑页面 如要编辑页面,单击顶部Ed ...
- logrotate日志管理工具
一.概述 logrotate是一个Linux系统默认安装了的日志文件管理工具,用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数等来转储,便于对日志文件管理. log ...
- ss 命令
ss命令用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比net ...
- 查看指定java进程的jvm参数配置命令之jinfo
一.查看所有的参数 jinfo -flags PS:3739为JAVA进程ID Attaching to process ID , please wait... Debugger attached s ...
- apache apr的编译和引用
各种巧合吧,需要从JAVA转C,经过这一段时间的心理折磨,还是决定先把精力放到C上. 想快速的提高自己,学习相关语言的经典的源码是唯一的“捷径”,从Apache apr开始吧. 一.下载源代码 官网地 ...
- GitHub 上值得推荐的开源电子书
GitHub 上值得推荐的开源电子书 开源不仅局限于软件领域,开源同样意味着自由选择的权利和对知识开放的追求. 可以参照这篇文章,已附上所有超链接编程类开放书籍荟萃-Linux Story 语言无关类 ...
- MySql计算两个日期的时间差函数
MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...
- python 动态属性
先来看一下一个常见的Python类的定义: class Person(object): name = None age = None def __init__(self,name,age): self ...
- 修改hadoop FileUtil.java,解决权限检查的问题
在Hadoop Eclipse开发环境搭建这篇文章中,第15.)中提到权限相关的异常,如下: 15/01/30 10:08:17 WARN util.NativeCodeLoader: Una ...
- Vue(六):条件与循环
1.条件(v-if) 控制切换一个元素是否显示 <div id="app-3"> <p v-if="seen">现在你看到我了</ ...