美文网首页
有分号和没分号的区别

有分号和没分号的区别

作者: zhulichao | 来源:发表于2020-07-24 09:04 被阅读0次

JavaScript 语句后应该加分号么?

通常情况下,解释器会自动添加分号,但有些时候不加分号还是容易引起解析错误,特别是在代码压缩的情况下,所以出于严谨考虑,还是推荐在语句结束时添加分号。还有不要把分号单单认为只是用来结束某段代码,它还可以用来隔离某段代码和别人划清界限。

如果遇到无法解析下去则javascript解析器会尝试给其添加一个分号,如果还是解析不了则报错。javascript解析器会尽可能多的去匹配,但也有几个例外,它们是retrun、break、continue,当javascript解析器解析到这几个关键字时,它不会把换行后的内容当成是自身的,而是直接在换行之前添加分号。

JavaScript自动加分号规则,有3条:

当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号。
当有}时,如果缺少分号,会补分号。
当程序源代码结束时,如果缺少分号,会补分号。

真正会导致上下行解析出问题的 token 有5个:括号,方括号,正则开头的斜杠,加号,减号。实际代码中几乎没有用正则、加号、减号作为行首的情况,所以一行开头是括号或者方括号的时候加上分号就可以了,其它时候全部不需要。

在return、break、continue、后自增、后自减五种语句中,换行符可以完全替代分号的作用。
var if do while for continue break return with switch throw try debugger几种关键字开头的语句,以及空语句,上一行加不加分号影响不大。
凡表达式语句和函数表达式语句,后面不加分号非常危险,情况极其复杂。
([开头的语句,前面不加分号极度危险。

```
// 例子1
var a = 10;
var b = 5;
var c = a + b
(a + b).toString() // b is not a function,同 var c = a + b(a + b).toString();

// 例子2
function test(){
  return 
  123;
}
console.log(test()); // undefined,同 return;
```

相关文章

  • 有分号和没分号的区别

    JavaScript 语句后应该加分号么? 通常情况下,解释器会自动添加分号,但有些时候不加分号还是容易引起解析错...

  • vscode去注释

    console.log()加了分号 console.log()没加分号

  • JS函数

    1、函数声明和函数表达式有什么区别 (*) ·函数声明后面没有分号,而表达式有分号。 ·函数声明有声明前置,而函数...

  • java script - 函数基础(17)

    函数声明和函数表达式有什么区别 (*) 函数声明后面没有分号,而表达式有分号。 函数声明会前置,而表达式不会。 一...

  • 分号问题+函数中的this

    这篇文章写2个知识点:分号问题和函数中的this。 分号问题 js语句的后面可以不加分号 是否加分号是编码风格问题...

  • 分号

    加分号就是不把该行的运行结果在matlab的窗口中显示出来,不加就是显示

  • 分号

    过年,永远绕不开的话题就是婚恋。 家人的关心,亲戚的问候,无形中就像一座大山压的人心慌意乱。 朋友说早晚都要面对的...

  • eslint配置 (写分号什么的)

    ' semi ':【' error ', 'always' 】强制有分号,没有分号就报错 忽略indent配置 ...

  • 函数-Assignment

    1.函数声明和函数表达式有什么区别 函数声明后面的分号可加可不加,不影响接下来的语句,但是函数表达式后面没有分号结...

  • swift基本应用

    //swift后面没有分号。。加分号不会报错。。但是规定不能加分号 //引入框没有分号 直接写就OK //swi...

网友评论

      本文标题:有分号和没分号的区别

      本文链接:https://www.haomeiwen.com/subject/slxjhktx.html