在19年做Node.js后端的过程中,我遇到了一个奇怪的问题。
明明语法上没有任何问题,但是仍然会出现奇怪的错误。最后我通过一步一步断点,发现了错误地点——是一个分号的问题!
正是由于这个错误,我推荐写Node的时候,一定要在句末写分号。
这个错误的原理是,多返回值函数会影响上一行代码。下面举个例子:
function func() {
return [1, 2]
}
let b = 0
let c = 0
let a = 3
[b, c] = func();
console.log("a is :" + a)
console.log("b is :" + b + " c is :" + c)
运行的结果将会是这样:
a is :1,2
b is :0 c is :0
很容易看到,我们函数的返回值给了上一行的a。这是因为我们的编译器将代码认为了:
let a = 3 ,[b, c] = func();
避免这种情况,养成写分号的习惯吧。