我正在做一个程序,其中我必须返回有关对象中文件的信息。该对象包含四个属性:
第一个属性名为birthTime
:它包含文件的诞生时间(以毫秒为单位)。
第二个名为modifiedTime
的属性:它包含文件被修改的时间(以毫秒为单位)。
第三个名为size
的属性:其中包含文件的大小。
名为type
的第4个属性,它包含文件的类型,即是文件还是目录。
我的代码是:
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtimeMs ,
modifiedTime: stats.mtimeMs ,
size: stats.size ,
type: function(){if(stats.isFile()===true){return "File"}
else{return "Directory"}}}
console.log(obj);
});
运行它时,我得到:
{ birthTime: 2019-07-16T18:00:51.674Z,
modifiedTime: 2019-07-16T18:00:51.674Z,
size: 327,
type: [Function: type] }
如何使代码返回"File"
而不是[Function: type]
?
答案 0 :(得分:5)
删除该函数,而改用三元运算符:
type: stats.isFile() ? 'File' : 'Directory'
答案 1 :(得分:1)
使用三元组
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {
birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: stats.isFile() ? "File" : "Directory"
};
console.log(obj);
});
使用IIFE
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {
birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: (function(){
if(stats.isFile()) {
return "File";
} else {
return "Directory";
}
})()
};
console.log(obj);
});
在其他地方声明该函数并调用它
function checkType(stats) {
return stats.isFile() ? "File" : "Directory";
}
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {
birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: checkType(stats)
};
console.log(obj);
});
计算变量值并将其存储
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var type = stats.isFile() ? "File" : "Directory";
var obj = {
birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: type
};
console.log(obj);
});
答案 2 :(得分:1)
将其设为IIFE
(立即调用函数表达式)
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: (function(){if(stats.isFile()===true){return "File"}
else{return "Directory"}}})()
console.log(obj);
});
或
尝试使用ternary
运算符
const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtime ,
modifiedTime: stats.mtime ,
size: stats.size ,
type: stats.isFile()?"File":"Directory",
console.log(obj);
});
答案 3 :(得分:1)
使用此:
type: stats.isFile() ? 'File' : 'Directory'