javascript有自动添加分号的功能,但是不是所有情况都会自动添加,要区分:

1,如果语句独占一行

如果当前行内的语句能够被js正确解析,那么就会在句尾添加一个分号。

(如何判断是否正确解析?你在控制台执行当前语句,不报错就可以-。-)

那么反之,如果当前语句不能被正确解析,那么就不会添加分号,而是将此行的末尾和下一行的开头连起来解析,所以就会产生其他问题。

a=1
b=1; // 第一个分号可以省略 var a
a
=
1 // 解析为 var a; a = 1; 因为等号是没办法解析的,所以必须将上面和下面联系起来,虽然a是可以解析的,因为上面已经声明了变量a

2,return , continue, break的换行处

如果上面三个关键字后换行了,那么会直接在后面加分号,所以如果有表达式要跟在后面,一定不能换行。

return
true; // 解析成return; true; 而不是return true;

3,代码块之后不能添加分号

比如if语句的代码块,for循环的代码块等等,后面不能手动写分号

4,以"(" , "[" , "/" , "+" , "-"开始的语句

如果一条语句以上面几个开始,那么它上面一行的代码结尾一定不能漏掉分号,尽管上一条语句可以单独被正确解析,例如

var a
[] // 报错 var a;
[] // 不报错

  

5,"++" , "--"也比较特殊

如果将其作为后缀表达式,它和表达式在同一行,否则,行尾填补分号,同时“++”和“--”作为下一行代码的前缀操作符:

x
++
y //解析为 x; ++y; 而不是我们期望的 x++; y;

  

JavaScript学习日志:关于js分号的更多相关文章

  1. javascript学习日志:前言

    javascript学习日志系列的所有博客,主要理论依据是<javascript权威指南>(犀牛书第6版)以及<javascript高级程序设计第三版>(红色书),目前js行业 ...

  2. Javascript学习记录——原生JS实现旋转木马特效

    昨天学习到了JS特效部分,然后老师讲了旋转木马特效的实现,如上图.不过只是讲了通过点击箭头实现图片的切换,对于点击图片本身以及二者联动却是没有讲解. 本着一颗追求完美的心,今天花费了一个中午终于将整个 ...

  3. JavaScript学习日志(六):事件

    这篇随笔,深恶痛绝,敲到快结束的时候,凌晨00:19,突然闪退,也不知道是Mac的原因还是chrome的原因,重新打开的时候,以为自动保存有效果,心想没关系,结果他么的只保存了四分之一,WTF?!!! ...

  4. JavaScript学习日志(五):DOM

    一,基本定义 DOM是针对HTML和XML文档的API,根据W3C的HTML DOM标准,html文档中所以内容(无论是元素还是标签还是注释还是元素属性)都是节点. 二,Node类型:每一个节点都含有 ...

  5. JavaScript学习日志(四):BOM

    BOM的核心对象就是window,这一章没什么好说的,总结一些比较常用的: 1,a未定义,a; //报错window.a; //undefined 不能用delete删除全局变量 2,html5不支持 ...

  6. JavaScript学习日志(一):变量,作用域和内存问题

    一,变量分为两种类型:基本类型值和引用类型值,基本类型包括:Undefined, String, Boolean, Null, Number,我们无法给基本类型值添加属性: 二,复制变量值的时候,如果 ...

  7. javascript学习一、js的初步了解

    1.javascript的简介: *javascript 是一种基于对象和事件驱动的语言,主要应用于客户端. -- 基于对象:  ** 提供了很多对象,可以直接使用. --事件驱动: ** html做 ...

  8. JavaScript学习日志(1)

    javascript用法: 1.HTML中的脚本必须位于<script>与</script>标签之间,可被放置在HTML页面的<body>和<head> ...

  9. JavaScript学习02(js快速入门)

    快速入门 基本语法 JavaScript的语法和Java的语法类似,每个语句以;结束,语句块用{...}.但是JavaScrip并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代 ...

随机推荐

  1. [Python学习] Django 权限控制

    本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事. 一.主要内容 1.什么是权限管理? 2.Web 权限 3.Django 权限机制 ...

  2. 设计模式学习(三): 装饰者模式 (附C#实现)

    需求 做一个咖啡店的订单系统. 买咖啡时,可以要求加入各种调料,如奶,豆浆,摩卡等.咖啡店会根据调料的不同收取不同的费用.订单系统要考虑这些. 初版设计 然后下面就是所有的咖啡....: cost方法 ...

  3. 模拟uClinux系统调用

    这篇文章原来放在CU上的,现在挪过来了.CU上设置不可见了. 1.  目标 这里主要是实验一下uclinux的系统调用. 2.   环境 OS                :vmware + red ...

  4. 6年后的第一篇博客:进入java的精彩世界

    10的.NET从业经验,也算资深人士了. 2018开始,正式进入JAVA的世界. 为什么说正式?因为已经附带有几年ANDROID经验了,确切的说,是正式进入JAVA服务器端. 没有任何人要求,纯粹是个 ...

  5. PyQt4 的部件 -- CheckBox 单选框

    单选框具有两种状态:被选中或未被选中. 当用户选择或者取消选择时,单选框就会发射一个stateChanged()信号 # QCheckBox 单选框 # 本例创建一个用来改变窗口标题的单选框 impo ...

  6. es7 await/async解决异步问题

    最近做项目遇到一个问题,前端调用ie浏览器中的ocx的方法去查询数据,查询完之后ocx给一个返回值,然后js将返回值当参数传入到另外的函数中去做数据处理,但是遇到一个问题是前端需要异步去执行这个过程 ...

  7. JAVA中的按值传递

    Java中只有按值传递,没有按引用传递! 方法参数共有两种类型: 基本数据类型 对象引用 一:基本数据类型 首先看一个小例子: package chuandi; public class Test1 ...

  8. 机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho

    机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho 总述 本书是 2014 ...

  9. MySQL innodb_table_monitor 解析

    背景:       用innodb_table_monitor来查看表内部的存储信息和索引结构是一个好的办法.再之前的MySQL 字符串主键和整型主键分析中提到了一些内容,但没有细讲,现在来好好的分析 ...

  10. IntelliJ IDEA 使用技巧

    本着工欲善其事必先利其器的精神,闷头写代码之外花点时间研究一下自己用的 IDE,其带来的效率提升非常可观. 高效定位代码 无处不在的跳转 项目之间跳转 下一个 ctrl + alt + ] 上一个 c ...