【发布时间】:2015-07-01 03:48:37
【问题描述】:
我试图理解为什么我在测试时得到“变量可能尚未初始化”(变量 === “某些文本”),但在使用时却没有得到(typeof passwordHashOrg !== 'undefined')
工作代码:
checkPass('share', function (error, response) {
"use strict";
if (error) {
console.log(error);
} else {
console.log(response);
}
});
function checkPass(username, callback) {
"use strict";
// Require
var fs = require('fs');
// Static Parameters
var usernameInput = username;
// Open shadow file
fs.readFile('/etc/shadow', function (error, file) {
if (error) {
return callback(error); // file does not exit
}
// file is a buffer, convert to string and then to array
var shadowArray = file.toString().split('\n');
var passwordHashOrg;
shadowArray.forEach(function (line) {
var shadowLineArray = line.split(":");
var usernameOrg = shadowLineArray[0];
if (usernameOrg === usernameInput) {
passwordHashOrg = shadowLineArray[1];
}
});
if (typeof passwordHashOrg !== 'undefined') {
callback(null, 'userExist');
} else {
callback(null, 'unknownUser');
}
});
}
我得到“变量可能尚未初始化”的代码:
checkPass('share', function (error, response) {
"use strict";
if (error) {
console.log(error);
} else {
console.log(response);
}
});
function checkPass(username, callback) {
"use strict";
// Require
var fs = require('fs');
// Static Parameters
var usernameInput = username;
// Open shadow file
fs.readFile('/etc/shadow', function (error, file) {
if (error) {
return callback(error); // file does not exit
}
// file is a buffer, convert to string and then to array
var shadowArray = file.toString().split('\n');
var passwordHashOrg;
shadowArray.forEach(function (line) {
var shadowLineArray = line.split(":");
var usernameOrg = shadowLineArray[0];
if (usernameOrg === usernameInput) {
passwordHashOrg = shadowLineArray[1];
}
});
if (passwordHashOrg === 'some text') {
callback(null, 'userExist');
} else {
callback(null, 'unknownUser');
}
});
}
这两个代码唯一不同的是:
if (typeof passwordHashOrg !== 'undefined') {
vs
if (passwordHashOrg === "some text") {
【问题讨论】:
-
在我看来,您不必初始化变量即可比较其类型。也许未初始化变量的类型已经是“未定义”?
-
这是 jslint 还是 jshint 警告?请适当标记您的问题。
-
问题是:我正在尝试在 linux 影子文件中查找特定用户,如果该用户存在,请执行某些操作。问题是:当我尝试测试变量“passwordHashOrg”是否具有某些值但如果我测试定义它成功时,为什么会得到“unknownUser”。
-
@AdrianGherasim:可能是因为影子文件不太可能包含“
some text”?
标签: javascript node.js