Javascript 练习将变量初始化为false
在一个nodejs课程(nodejsinaction-manning的书)之后,我看到了这段代码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
// 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
我也同意,将它初始化为一个毫无意义的布尔值是非常奇怪的,它甚至没有上下文的适当含义。这不仅仅是过于谨慎,而是错误的。似乎有人认为所有声明的值都应该立即初始化(事实并非如此,因为在Javascriptundefined
中,在某些上下文中是一个非常有意义的初始值),所以他们只选择了一些值来分配给它
您的编辑器提供了一个警告,提示您在单个变量中突然切换类型是一种不寻常的情况。从技术上讲,这不是Javascript中的错误(换句话说,这是允许的),但它也可能是编码错误的指示器,所以这就是您的编辑器所告诉您的。我知道这并不能回答您的问题,但为什么不使用空字符串作为filePath的默认值呢?@Aniket正如我所说的,这是我从书中提取的代码片段。我也想知道这可能只是作者的选择,这绝对是作者的选择。JavaScript是松散类型的,这不会引发任何错误。如果我是作者,我会使用一个类型一致的空字符串。这是你的编辑器,代码应该可以很好地工作,这不是一个好的实践只是想知道,因为空字符串也是假的。。。我找不到有关此初始化为false的要点。@blacai-空字符串为
false
meanif(“”
计算结果为false
)。这与false
不完全相同。但是undefined
也是false
,这是它在没有初始化的情况下具有的值,因此没有理由将其初始化为false
。是的,我知道false==”
和false==”
。你的解释很清楚。