2014-05-12 171 views
0

我在學習Node.js,並學習高級Javascript。在這段代碼中,他們使用節點製作一個HTTP服務器,一切正常,容易:dir是什麼? dir +「/」:「」是什麼意思?

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做什麼(爲什麼「:」」「)?

+3

[Conditional operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) –

+0

Thx,很有幫助 – gurrumo

回答

0

等於:

if(dir){ 
    localPath += dir + "/"; 
} 
else{ 
    localPath += ""; 
} 
+0

Thx,感謝您的幫助 – gurrumo

2
localPath += (dir ? dir + "/" : "") + filename; 

if (dir) { 
    localPath += (dir + "/") + filename; 
} else { 
    localPath += ("") + filename; 
} 

這是ternary operator的簡寫,更具體地?: ternary operator

P.S.爲了清楚起見,我在等效代碼中留下了括號/大括號。