1.前言

  由于Javascript有自动识别一句语句的结尾,但是缺少必要分号作为结尾符,会降低代码的可读性和整洁性。通过javascript权威指南By淘宝前端团队译,这分号还算比较好玩的。

2.样例

2.1 两句语句有两行的书写

a = 3; //第一行的分号可以省略
b = 4;

2.2 两句语句一行的书写

a = 3; b = 4; //第一个分号不能省略,否则提示Uncaught SyntaxError: Unexpected identifier

2.3 容易引起误解的写法

2.3.1

var a
a
=
3
console.log(a) 

等价于 var a; a = 3;console.log(a);

2.3.2

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

等价于var y =  x + f(a+b).toString(0;

2.4 通常来讲,如果一条语句以'(','[','/','+','-' 开始的,那么它可能会和前一条语句合在一起解析,后三种不常见,但是前两者比较常见,所以可以保守地在语句前面多加一个分号。

var x = 0
;[x,x+1].forEach(console.log);

2.5 方法结束加不加分号都可以,安装java,C/C++的习惯是不加。

function fun{

} //};也是可以的。

2.6 如果前语句和下一行语句无法合并解析,JS则会在第一行后填补分号,这是通常规则,But有两个例外

2.6.1 第一个例外是涉及到return、break和continue语句

return
true;

会被解析成return; true; 而代码的本意是return true;

2.6.2 涉及“++”和“--”

x
++
y

等价于x; ++y; 而不是x++; y

 3. 总结

尽量写规范一些,防止编译器理解错你的表达。

[学习笔记]Javascript可选的分号的更多相关文章

  1. 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

    学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...

  2. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  3. HTML 学习笔记 JavaScript(面向对象)

    现在让我们继续跟着大神的脚步前进 学习一下JavaScript中的面向对象的思想,其实作为一个iOS开发者,对面向对象还是比较熟悉的,但是昨晚看了一下Js中的面向对象,妈蛋 一脸萌比啊.还好有大神.让 ...

  4. HTML 学习笔记 JavaScript (prototype)

    原博地址:http://www.cnblogs.com/dolphinX/p/3286177.html 原博客的作者是一个非常牛逼的前端大神,我作为一个初学者,在此借助大神的博客进行自己的学习.在这里 ...

  5. HTML 学习笔记 JavaScript (String)

    String对象用于存储字符串的数据.这里我们做了JavaScript的String字符串对象常用操作总结. 创建String对象的方式 声明:String 对象的方法也可以在所有基本字符串值中访问到 ...

  6. HTML 学习笔记 JavaScript (函数)

    函数是由事件驱动的或者当他被调用时执行的可重复使用的代码块 实例 <!DOCTYPE html> <html> <head> <script> func ...

  7. [前端JS学习笔记]JavaScript function

    一.函数的声明 1.1 function 命令 function methodName(params) { // code } 如下声明: function test_function(params) ...

  8. [JavaScript] 学习笔记-JavaScript基础教程

    1.JavaScript介绍 1)JavaScript是互联网上最流行的脚本语言,这门语言可用于Web和HTML,更可广泛用于服务器.pc端.移动端.JavaScript是一种轻量级的编程语言,插入H ...

  9. js学习笔记----JavaScript中DOM扩展的那些事

    什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null ...

随机推荐

  1. 再谈一次关于Java中的 AIO(异步IO) 与 NIO(非阻塞IO)

    今天用ab进行压力测试时,无意发现的: Requests per second:    xxx [#/sec] (mean) ab -n 5000 -c 1000 http://www:8080/up ...

  2. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path

    http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/ ...

  3. Python数据挖掘课程

    [Python数据挖掘课程]一.安装Python及爬虫入门介绍[Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍[Python数据挖掘课程]三.Kmeans聚类代码实现.作 ...

  4. SQL经典问题:找出连续日期及连续的天数

    create table tmptable(rq datetime) go insert tmptable values('2010.1.1') insert tmptable values('201 ...

  5. list 删除一个元素的三种做法--python

    我们以一个字符串为元素类型的 list 为例,进行列表元素的删除: l = ['no surfing', 'flippers'] 法一:remove(val) >>> l.remov ...

  6. CodeForces786B 线段树 + 最短路

    给定n颗行星,q次处理,地球位置为s,求解在q次处理后,地球到每一颗行星的位置. 其中q有三种不同的操作: 输入v,u,wv,u,w,构建一条从vv到uu的代价为ww的路线 输入u,l,r,wu,l, ...

  7. IDEA下搜狗输入法输入中文时卡着不动的参考解决方法

    在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,一直卡着,如图:  我想输入“根据”两个字,但搜狗输入法界面一直卡着不刷新,导致都不知道自己输 ...

  8. #define宏定义中## #@ # \ 符号使用

    C/C++ 宏命令的神奇用法. 先看下面三条语句: #define Conn(x,y)     x##y#define ToChar(x)     #@x#define ToString(x)    ...

  9. 在windows中停止mysql提示:'服务正在启动或停止中,请稍候片刻后再试一次'

    发现mysql的windows服务异常,准备卸载并重新注册服务,输入: mysqld --remove MySQL 提示: 发现卸载不掉这个服务,于是找到MySQL服务的pid sc queryex ...

  10. ChunkDisappearImage-一个以矩形为单位的图片消失分解效果

    效果 使用 1.将ChunkDisappearImage挂在一个空GameObject上. 2.将ChunkDisappearImage的Material设为ChunkDisappearImageMa ...