首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dir是什么?dir + "/“:"”意思是?

dir是什么?dir + "/“:"”意思是?
EN

Stack Overflow用户
提问于 2014-05-12 23:54:07
回答 2查看 87关注 0票数 0

我正在学习Node.js,并学习高级Javascript。在这段代码中,他们使用Node创建HTTP服务器,一切都很简单:

代码语言:javascript
复制
var http = require("http");
var path = require("path");
var fs   = require("fs");

var extensions = {
".html": "text/html",
".css": "text/css",
".js": "application/javascript",
".png": "image/png",
".gif": "image/gif",
".jpg": "image/jpeg"
};

    http.createServer(function(req, res) {

        var filename = path.basename(req.url) || "index.html";
        var ext = path.extname(filename);
        var dir = path.dirname(req.url).substring(1);
        var localPath = __dirname + "/public/";

        if (extensions[ext]) {
            localPath += (dir ? dir + "/" : "") + filename;
            path.exists(localPath, function(exists) {
                if (exists) {
                    getFile(localPath, extensions[ext], res);
                    } else {
                            res.writeHead(404);
                            res.end();
                            }
            });
        }

    }).listen(8000);

但是,我不明白构造dir ? dir是做什么的(为什么是“:")?

EN

回答 2

Stack Overflow用户

发布于 2014-05-12 23:56:33

代码语言:javascript
复制
localPath += (dir ? dir + "/" : "") + filename;

是以下的简写:

代码语言:javascript
复制
if (dir) {
    localPath += (dir + "/") + filename;
} else {
    localPath += ("") + filename;
}

这是ternary operator,更具体地说是?: ternary operator

附注:为了清楚起见,我将括号/大括号留在了等价的代码中。

票数 2
EN

Stack Overflow用户

发布于 2014-05-12 23:56:08

等于:

代码语言:javascript
复制
if(dir){
  localPath += dir + "/";
}
else{
  localPath += "";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23613560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档