练习将变量初始化为 false

Practice initialize variable to 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.');
});

我的问题是关于变量 "filePath"。它被初始化为 false,但后来它采用字符串值。

我使用的编辑器(Visual Studio 代码)向我显示警告:

Type 'string' is not assignable to type 'boolean'

我对javascript的了解不是很深,但我知道它是松散的类型。所以这是我的问题。

这个初始化为 false 是因为什么原因吗? 有什么理由这样做吗? 我的编辑警告错了吗...? 或者只是作者的惯用做法。

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

这一行:

var filePath = false;

可以安全地更改为:

var filePath;

这是可以做到的,因为下面语句中的 if/else 可以保证以一种或另一种方式初始化 filePath

而且,我同意,将它初始化为一个无意义的布尔值也很奇怪,甚至对上下文没有适当的意义。这甚至不仅仅是过度谨慎——这是错误的。似乎有人认为所有声明的值都应该立即初始化(根本不是这种情况,因为 Javascript undefined 在某些情况下是一个非常有意义的初始值)所以他们只是选择了一些值来分配

您的编辑器发出警告,您在单个变量中突然切换类型是一种不寻常的情况。在 Javascript 中这在技术上不是错误(换句话说,它是允许的),但它也可能是编码错误的指示器,所以这就是您的编辑器告诉您的所有内容。