博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中缺少分号结尾的情况
阅读量:7128 次
发布时间:2019-06-28

本文共 984 字,大约阅读时间需要 3 分钟。

首先看一段代码

1 function* fib (max) { 2     let a = 0 3     let b = 1 4     let n = 1 5     while (n < max) { 6         yield a; 7         [a, b] = [b, a + b] 8     } 9 }10 11 let [first, second, third, fourth, fifth] = fib(5)

实现裴波那切数列,输出结果,正常

[first, second, third, fourth, fifth] // 0, 1, 1, 2, 3

注意看第6行,加入将第6行后的分号去掉,输入结果如下

[1,1, 1,1, 1,1, 1,1, 1,1]

每一项都是 [1, 1],因为第6行在省去分号之后,被解析为

yield a[a, b] = [b, a + b]

那么问题来了,对于分号的解析规则是怎样的呢?

  • 规则一:仅在“}”后、一行结束时以及一段程序结束处自动添加分号
  • 规则二:仅在下一行第一个字符无法解析时自动添加分号,注意:若第二行以(、[、+、-或/开头时,JavaScript不会自动添加分号
    • 1 a = b2 (fn())3 4 // 会被解析为5 a = b(fn())
  • 规则三:for循环及空循环体的while不能省略分号
    • 1 // for 正常写法 2 for (var i = 0; i < 10; i++) { 3   console.log(i)   4 } 5  6 // for 中分号不能省略,会报错 7 for (var i = 0 8  i < 10 9  i++      10 ) {11   console.log(i)  12 }
    • 1 // while 出现空循环体时, 正常写法2 3 while(flag);4 5 // 省略分号,解析报错6 while(flag)

根据以上规则描述,开始的示例中,应该归属于规则二,所以分号省略与否对结果还是有比较大的影响

但是,在使用过程中分号的省略与否和个人编码风格关系更大一些,知道原理更加重要,在关键位置注意分号的使用即可。

 

转载于:https://www.cnblogs.com/jacky-jyk/p/10607831.html

你可能感兴趣的文章
React + Antd实现简单的todolist
查看>>
从《人人都是产品经理》分析自我转型之路
查看>>
Spring Boot Admin2.X监控的服务context-path问题
查看>>
Sentinel: 接入控制台实时查看监控数据
查看>>
利用高阶函数实现协程
查看>>
Webpack4.x 入门实践之旅
查看>>
基于docker的jenkins安装
查看>>
【福利】送Spark大数据平台视频学习资料
查看>>
B2C购物商城系统定制优势_购物商城系统适用在哪?
查看>>
服务器
查看>>
canvas系列教程之线条的属性
查看>>
当我们在说“并发、多线程”,说的是什么?
查看>>
你想面试的公司这里应有尽有之杭州天择网络技术有限公司
查看>>
QQ音乐搜索功能基本思路
查看>>
Oracle 修改AWR的信息收集频率
查看>>
浏览器打印
查看>>
linux安装软件几种方法
查看>>
边界值分析法
查看>>
一个有趣的问题
查看>>
mint mvc文件上传功能——原理篇
查看>>