遵循nodejs课程(NodeJS in Action - 曼宁的书)我看到了这段代码
// 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 Code)向我显示警告:
类型'string'不能赋值为'boolean'
我对javascript的了解并不是很深入,但我知道它是松散的类型。所以这是我的问题。
由于某些原因,这个初始化是否为假? 有没有这样做? 我的编辑警告错了吗? 或者只是作者的惯常做法。
答案 0 :(得分:2)
没有理由将false
初始化,在这种情况下甚至不是一个好习惯。
这一行:
var filePath = false;
可以安全地改为:
var filePath;
这可以完成,因为以下语句中的if / else保证以某种方式初始化filePath
。
而且,我同意,将它初始化为无意义的布尔值也很奇怪,甚至对上下文都没有合适的含义。它甚至不仅仅是过于谨慎 - 这是错的。似乎有人认为应该立即初始化所有声明的值(根本不是这种情况,因为在Javascript undefined
中在某些上下文中是一个非常有意义的初始值)所以他们只选择了一些值来分配给它。 / p>
您的编辑提供了一个警告,指出您突然在单个变量中切换类型是一种不寻常的情况。从技术上讲,它不是Javascript中的错误(换句话说,它是允许的),但它也可能是编码错误的指示器,因此您的所有编辑都告诉您。