记录以下信息,源于一件事情,一位同事,每次我改他的js代码,发现语句结束都不使用分号作为结束。长长的一串,读起来比较吃力。
即便语句的结束不使用分号结束,代码仍然不会报错,正常运行,所以不少程序员懒得去管这个。

使用分号有两个好处:1、其他人读你的代码可读性好。2、减少不必要的语法错误。在互联网为了减少带宽,压缩js的文件并成一行,不会出问题(看jquery

压缩版就知道压缩后的js是并在一行的)。其实我还发现,当使用代码编辑器进行格式化源码的时候,可以避免问题

看下面代码:

..............前面代码

})   //这里作为语句结束,应该有个分号

return false       //这里也要有分号,不加其实不会报错

}

.....后续代码

看最后的"})"应该要以分号结束语句

-----------------------------------------------

js语句的结束符规律

-----------------------------------------------
如果不使用分号结束,在某些情况下是可行的。因为js解析器会去判断此行(在这里就是"})"所在的行),是否会有后续代码,如果没有。就默认语句结束(也就是把空的当成语句结束)。
js解析器会把新行当成新的代码语句。如果有后续呢?这样子就把后面代码也当成同一句进行处理。所以最好是养成写分号作为语句结束符的习惯。为了节省网络带宽,提高网站速度,当需要压缩js脚本的时候。就会把所有的代码并到一行,这样的情况下,如果没有分号,就无法明确知道语句的结束了,就会出现语法错误

看下面代码:

....
}) //这里本来是语句结束符,不加分号";"也不会报错,原因是后面没有任何内容了,所以js解析器会自动把这里当成语句结束

var userid = "{$_userid}";

如果压缩js代码,就会变成如下:

...})var userid = "{$_userid}";

出现语法错误。

归纳:养成一个语句结束加";"的习惯是很好的,可以避免很多问题

编写js语句结束时保持良好的习惯-源于身边例子的更多相关文章

  1. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  2. JS 语句

    JS 语句 JavaScript 语句 JavaScript 语句向浏览器发出的命令.语句的作用是告诉浏览器该做什么. 下面的 JavaScript 语句向 id="demo" 的 ...

  3. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!

    原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...

  4. JS语句

    JS语句包括: 1.顺序语句 2.分支语句:  if...else                   switch...case 3.循环语句 一.先看顺序语句: </body> < ...

  5. 关于js语句的分号

    我在使用js的时候可能发现一个现象:js语句结尾有时候有分号,有时候没有,没有的时候js代码也是能正确执行的. 到底要不要写分号?QAQ 转自博客园@winter-cn JavaScript自动加分号 ...

  6. c-lodop云打印实现手机打印 JS语句打印

    Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...

  7. 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis

    springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...

  8. 用JS遍历循环时覆盖了之前的值

    使用js遍历Echarts时,三个数据项,七个分类,遍历如下, 其他都没有问题,就是series.data里的数据只加载了一组,控制台显示数组的长度是7,可是下面的数据只有一个 发现把给数据项赋值的语 ...

  9. legend---十二、js中的js语句和函数和ready函数的关系是什么

    legend---十二.js中的js语句和函数和ready函数的关系是什么 一.总结 一句话总结: 函数和全局变量不必放到ready函数中 语句(调用函数和全局变量)的必须放到ready函数中 1.在 ...

随机推荐

  1. golang学习笔记 ---TCMalloc

    图解 TCMalloc 前言 TCMalloc 是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配.它具有现代化内存分配器的基本特征:对抗 ...

  2. easyui textbox combobox 设置只读不可编辑状态

    输入框 textbox $("#xx").textbox('setValue','value');  //设置输入框的值 $('#xx').textbox('textbox').a ...

  3. 使用ShellExecute打开文件夹并选中文件

    原文链接: http://futurecode.is-programmer.com/posts/24780.html 假设在C:\目录下存在文件a.txt. 打开这个目录是ShellExecute的常 ...

  4. SQL语句操作优先级顺序

    SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后 ...

  5. ICDAR 成绩 前5企业和高校

    11月20日,有光学字符识别(OCR)领域“奥斯卡”之称的国际文档分析与识别大会(ICDAR)数据集最新结果公布,中国高校及企业包揽排行榜前五. ICDAR2015数据集前五名及框架名称分别是:云从科 ...

  6. [CTCI] 双栈排序

    双栈排序 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. 给定一个int[] numbers(C++中 ...

  7. Android Webview SSL 自签名安全校验解决方案

    服务器证书校验主要针对 WebView 的安全问题. 在 app 中需要通过 WebView 访问 url,因为服务器采用的自签名证书,而不是 ca 认证,使用 WebView 加载 url 的时候会 ...

  8. ASP.NET MVC中全局异常处理

    以前不知道从哪里找到的处理全局异常的,觉得蛮好用就记下来了. 1, 建立MyExecptionAttribute.cs类,写入如下代码: using System; using System.Coll ...

  9. R语言之——字符串处理函数

    nchar 取字符数量的函数 length与nchar不同,length是取向量的长度 # nchar表示字符串中的字符的个数 nchar("abcd") [1] 4 # leng ...

  10. haproxy rpm制做

    [root@c01 tmp]# fpm -s dir -t rpm -v 1.7.7 -n haproxy --before-install /tmp/haproxy_before.sh --afte ...