Javascript分号规则的知识介绍(附示例)


当前第2页 返回上一页

故以下栗子中的每一个分号都不能省略!!

1

2

3

4

// for循环没有循环体的情况,每一个分号都不能省略

for (node=getNode();

     node.parent;

     node=node.parent) ;

再看一个带详细注释的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

var         // 这一行不会插入分号 ,因为 下一行的代码不会破坏当前行的代码 

    a = 1   // 这一行会插入分号  

let b = 2  

 

// 再比如这种情况,你的原意可能是定义 `a` 变量,再执行 `(a + 3).toString()`,

// 但是其实 JavaScript 解析器解析成了,`var a = 2(a + 3).toString()`,

// 这时会抛出错误 Uncaught TypeError: 2 is not a function

var a = 2

(a + 3).toString()

 

// 同理,下面的代码会被解释为 `a = b(function(){...})()`

a = b

(function(){

...

})()

以上都是未能命中规则1而未插入分号导致解析与预期不符合的情况

看一个基于规则3的例子:

1

2

3

4

5

6

(() => {

  return

  {

    color: 'white'

  }

})()

预期是返回一个包含 color 属性的对象,但事实上 return 后会被插入一个分号,而导致最终返回 undefined,可以通过在 return 后立刻放置花括号 { :

1

2

3

4

5

(() => {

  return {

    color: 'white'

  }

})()

省略分号的最佳实践

不要使用以下单个字符 ( [ / + - 开始一行 , 会极有可能和上一行语句合在一起被解析( ++ 和 -- 不符合单个 +、- 字符)

注意 return break throw continue 语句,如果需要跟随参数或表达式,把它添加到和这些语句同一行,针对 return 返回内容较多的情况 (大对象,柯里化调用,多行字符串等),可以参考规则1,避免命中该规则而引起非预期的分号插入,比如:

1

2

3

4

5

6

7

8

9

10

11

return obj.method('abc')

          .method('xyz')

          .method('pqr')

  

return "a long string\n"

     + "continued across\n"

     + "several lines"

  

totalArea = rect_a.height * rect_a.width

          + rect_b.height * rect_b.width

          + circ.radius * circ.radius * Math.PI

后缀运算符 ++ -- 需要和操作变量在同一行使用

当然大部分工程化情况下,我们最终会配合Eslint使用带分号或省略分号规范~~~

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

以上就是Javascript分号规则的知识介绍(附示例)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

javascript求x平方怎么做

javascript中对象的介绍(附代码)

react是javascript

javascript数组遍历的6种方法比较

用什么软件写javascript代码

实例教程介绍javascript十大取整方法

javascript 中向上取整、向下取整、四舍五入的操作

javascript和ajax的区别是什么

用h5的webgl如何在同一个界面做出json和echarts图表

面试常问之javascript变量提升

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...