Javascript 练习将变量初始化为false

Javascript 练习将变量初始化为false,javascript,node.js,initialization,Javascript,Node.js,Initialization,在一个nodejs课程(nodejsinaction-manning的书)之后,我看到了这段代码 // create server var server = http.createServer(function(request, response){ var filePath = false; if (request.url == '/') { filePath = 'public/index.html'; } else { filePat

在一个nodejs课程(nodejsinaction-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代码)向我显示一条警告:

类型“string”不可分配给类型“boolean”

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

是否因为某些原因将初始化设置为false? 有没有理由这样做? 我的编辑的警告错了吗。。。?
或者只是作者的常规做法。

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

这一行:

var filePath = false;
可以安全地更改为:

var filePath;
这是因为以下语句中的if/else保证以某种方式初始化
filePath

我也同意,将它初始化为一个毫无意义的布尔值是非常奇怪的,它甚至没有上下文的适当含义。这不仅仅是过于谨慎,而是错误的。似乎有人认为所有声明的值都应该立即初始化(事实并非如此,因为在Javascript
undefined
中,在某些上下文中是一个非常有意义的初始值),所以他们只选择了一些值来分配给它


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

我知道这并不能回答您的问题,但为什么不使用空字符串作为filePath的默认值呢?@Aniket正如我所说的,这是我从书中提取的代码片段。我也想知道这可能只是作者的选择,这绝对是作者的选择。JavaScript是松散类型的,这不会引发任何错误。如果我是作者,我会使用一个类型一致的空字符串。这是你的编辑器,代码应该可以很好地工作,这不是一个好的实践只是想知道,因为空字符串也是假的。。。我找不到有关此初始化为false的要点。@blacai-空字符串为
false
mean
if(“”
计算结果为
false
)。这与
false
不完全相同。但是
undefined
也是
false
,这是它在没有初始化的情况下具有的值,因此没有理由将其初始化为
false
。是的,我知道
false==”
false==”
。你的解释很清楚。