练习初始化variables为false

在一个nodejs课程(NodeJS in Action – manning的书)之后,我看到了这段代码

// create server var server = http.createServer(function(request, response){ var filePath = false; if (request.url == '/') { filePath = 'public/index.html'; } else { filePath = 'public' + request.url; } var absPath = './' + filePath; serveStatic(response, cache, absPath); }); server.listen(3000, function(){ console.log('Server listening on port 3000.'); }); 

我的问题是关于variables“filePath”。 它正在被初始化为false,但后来它需要string值。

我使用的编辑器(Visual Studio Code)给我一个警告:

types“string”不可分配为键入“布尔”

我对JavaScript的知识并不深,但我知道它是松散的types。 所以这是我的问题。

这是由于什么原因初始化? 任何reaston这样做? 我的编辑警告错了吗? 或者只是作者的惯例。

初始化没有理由是false ,在这种情况下甚至不是一个好的做法。

这一行:

 var filePath = false; 

可以安全地更改为:

 var filePath; 

这可以这样做,因为if / else在下面的语句中保证以某种方式初始化filePath

而且,我也同意,把它初始化为一个毫无意义的布尔值是非常奇怪的,甚至对上下文没有适当的含义。 这不仅仅是过于谨慎 – 这是错误的。 看起来,有人认为所有声明的值应该立即初始化(根本不是这样的,因为在undefined Javascript中,在某些情况下是一个非常有意义的初始值),所以他们只是select了一些值来分配给它。

您的编辑器正在提供一个警告,指出在一个variables中突然切换types是一种不寻常的情况。 这在技术上不是Javascript中的错误(换句话说,它是允许的),但它也可能是一个编码错误的指示器,所以你的编辑正在告诉你。