经常不写分号,会导致一些意想不到错误。
俺习惯性写JavaScript不带分号。
我真的很喜欢。在我看来,语言更简洁。
你可能不喜欢这样,这是可以理解的。但事实就是这样。
分号是可选的。我们不需要添加它们。
然而,有时我们必须注意。特别是在Node.js中,我们使用require()来加载外部模块和文件。
在某些情况下,这可能会导致如下错误:
TypeError: require(...) is not a function
这是个奇怪的错误,对吧?
让我们看看如何复现这个错误。
我需要一个库,然后我必须运行一些代码在根级,我创建了一个立即调用异步函数:
const fs = require('fs')
(async () => {
//...
})()
在require()之后,JS没有看到分号,我们用(另起了一行,JS认为我们在尝试执行一个函数。
它将require(‘fs’)作为函数的名称,如果模块导出返回一个函数,那么这个名称实际上是可以工作的。
但它不是,因此会报…不是一个函数错误。
我们如何解决这个问题?
我们必须加一个分号。
下面的两种方式可以解决这个问题。
方法一
/**
* 前端教程网
* https://www.pipipi.net/
*/
const fs = require('fs')
;(async () => {
//...
})()
方法二
/**
* 前端教程网
* https://www.pipipi.net/
*/
const fs = require('fs');
(async () => {
//...
})()
为了避免到处使用分号,我们不得不多写一些代码 : )