练习初始化变量为false

时间:2015-08-08 07:01:32

标签: javascript node.js initialization

遵循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的了解并不是很深入,但我知道它是松散的类型。所以这是我的问题。

由于某些原因,这个初始化是否为假? 有没有这样做? 我的编辑警告错了吗? 或者只是作者的惯常做法。

1 个答案:

答案 0 :(得分:2)

没有理由将false初始化,在这种情况下甚至不是一个好习惯。

这一行:

var filePath = false;

可以安全地改为:

var filePath;

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

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

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