js中如果省略分号那么它是如何运行的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中如果省略分号那么它是如何运行的相关的知识,希望对你有一定的参考价值。

javascript工作中,我们几乎不会去省略分号;为了不必要的麻烦以及代码的规范,那么如果我们省略;会发生呢?预知详情请听下回分解。

 

看代码!

片段一:

1 var a
2 = 
3 8
4 console.log(a); >>8

片段二:

技术分享
var a
b
= 
8
console.log(a); >>undefined
console.log(b); >>8
console.log(ab); >>Uncaught ReferenceError: ab is not defined
技术分享

看到了什么?

你没有猜错,你可以这样去理解,当我们按回车就是给它加了一个空格,比如上面的片段一:var a = 8,但是它发现后面的console.log(a)是一个独立的语句所以js默认在var a = 8的后面加了一个分号;最后就变成了

var a = 8;console.log(a);

当然上面那只是一种情况,片段二的情况是这样的:var a;b=8;为什么会这样呢,因为js发现如果加的是空格的话就会出现错误 var a b = 8;是运行不了的,所以js就给它加了个分号,简单的来说如果前面的能够和后面的拼接上那么它加的就是空格,如果拼接不上就加分号,这个第二种情况。当然这也只是我的理解,如果有理解错误请告知。

 

另外的还有几种特殊的情况

技术分享
1 var a = 2;
2 var b = 3;
3 a
4 ++
5 b
6 console.log(a); >>2
7 console.log(b); >>4
技术分享

如果是这种情况,它的运行结果是a;++b;

至于为什么因为本人技术有限,暂时也不清楚。

 

还有就是另外3个比较特殊的

return,continue,break;

如果有换行后面加的是分号

return
true;

它解析成了return;true;

以上是关于js中如果省略分号那么它是如何运行的的主要内容,如果未能解决你的问题,请参考以下文章

如果在文件末尾省略PHP块的结束标记,是否会删除任何换行符或空格(如果存在于相应的文件中)?

JS常用代码片段-127个常用罗列-值得收藏

java编程基础流程控制语句

js不加分号的代码风格应该注意的问题

Ecmascript语句

JavaSE-22.1.5Lambda表达式的省略模式