我正在尝试创建一个脚本,该脚本可以由我们学区的秘书在浏览器中运行。基本上,他们将输入一个新的学生或新员工的姓名,并获得8位数字的输出,6位数字的随机数,并在末尾添加用户首字母缩写。他们会将其复制到我们的系统中,并且唯一的代码将启动自动创建帐户。我们已经设置好帐户,并且可以正常工作,但是很难获得唯一的代码。我没有包括脚本的随机数部分,因为我唯一的问题在于提示用户名并提取缩写。
function ID() {
var userName = prompt("Please enter your name", "<User Name>");
}
function getInitials(name) {
let initials = "";
let waitingForSpace = false;
for (var i = 0; i < name.length; i++) {
if (!waitingForSpace) {
initials += name[i];
waitingForSpace = true;
}
if (name[i] === " ") {
waitingForSpace = false;
}
}
return initials;
}
console.log(getInitials(userName));
我想我应该提示输入用户名,该用户名存储为userName。然后将其用于getInitials。但是,当我尝试运行Node Initials.js时,我得到...
ReferenceError:未定义userName
在对象。 (/Users/dross/Documents/UserID/Initials.js:22:25)
在Module._compile(内部/模块/cjs/loader.js:689:30)
在Object.Module._extensions..js(internal / modules / cjs / loader.js:700:10)
在Module.load(internal / modules / cjs / loader.js:599:32)
在tryModuleLoad(internal / modules / cjs / loader.js:538:12)
在Function.Module._load(internal / modules / cjs / loader.js:530:3)
在Function.Module.runMain(内部/模块/cjs/loader.js:742:12)
启动时(internal / bootstrap / node.js:283:19)
在bootstrapNodeJSCore(internal / bootstrap / node.js:743:3)
答案 0 :(得分:1)
您的代码中缺少}
。您可以将代码更改为以下内容:
function getUserName() {
var userName = prompt("Please enter your name", "<User Name>");
return userName; // return the entered name
}
function getInitials(name) {
let initials = "";
let waitingForSpace = false;
for (var i = 0; i < name.length; i++) {
if (!waitingForSpace) {
initials += name[i];
waitingForSpace = true;
}
if (name[i] === " ") {
waitingForSpace = false;
}
}
return initials;
}
var name = getUserName(); // returns the name entered
console.log(getInitials(name));
答案 1 :(得分:0)
在您的原始帖子中,您实际上是作为闭包交付了整个功能,因此内部的“用户名”功能在外部可用。顺便说一句,我不认为缺少'{'。
现在,在修改后的代码中,您已经将“用户名”作为本地变量,因为不再为它分配“功能”。因此,现在在外面“未定义”。
我认为您应该注意Peter B的评论,指出您必须将(原始)函数称为
console.log(getInitials(userName()));