在之前的工作中,我遇到了一个奇怪的问题。明明在语法上没有问题,找同事也看了,但是程序依旧会产生奇怪的错误。最后通过一步一步断点,定为了错误位置,才找到了造成这个错误的原因———在一个不需要分号的语言中,句末不加分号居然报错了。
不卖关子了,这个错误是多返回值函数造成了对上一句值的影响。下面举个例子:
1 | function func() { |
运行的结果将会是这样:
a is :1,2
b is :0 c is :0
很容易看到,我们函数的返回值给了上一行的a。这是因为我们的编译器将代码认为了:
1 | let a = 3 ,[b, c] = func(); |
避免这种情况,还是要多加分号吧——虽然它并不会报错。