我认为我并没有完全理解这是如何运作的(我有点尴尬......有点意思很多)。基本上这应该创建一个提示符并写入console.log fullName,每个提示中的前两个字母要大写并连接在一起。请帮忙!
var fullName = "";
//Why does fullName have to be defined as a string? and when it's removed it doubles the value?
var name;
var firstLetter;
var fixName = function () {
firstLetter = name.substring(0, 1);
name = firstLetter.toUpperCase() + name.substring(1);
fullName = fullName + " " + name;
//what exactly is happening here under the fullName variable? What value is passing into fullName after it's being called?
}
name = prompt("Enter your first name (all in lower case):");
fixName();
name = prompt("Enter your second name (all in lower case):");
fixName();
console.log("And your fullname is:" + fullName);
答案 0 :(得分:2)
这是该函数的注释版本:
var fixName = function () {
// get the first letter of the string
firstLetter = name.substring(0, 1);
// assign back to name the uppercased version of the first letter
// with the rest of the name
name = firstLetter.toUpperCase() + name.substring(1);
// add name onto the end of fullName
// this will accumulate each time this function is called because
// fullname is a global variable so it will get longer and longer each time
// with more and more names in it
fullName = fullName + " " + name;
}
仅供参考,这是一个非常糟糕的代码。它应该至少使用一些局部变量和一个函数参数,如下所示:
var fullName = "";
function fixName(name) {
var firstLetter = name.substring(0, 1);
fullName = fullName + " " + firstLetter.toUpperCase() + name.substring(1);
}
fixName(prompt("Enter your first name (all in lower case):"));
fixName(prompt("Enter your second name (all in lower case):"));
console.log("And your fullname is:" + fullName);
它可能不应该修改全局变量作为副作用(可能应该使用返回值),但我没有改变它。
答案 1 :(得分:0)
fullName
首先定义为一个空字符串,name
在name
更改为第一个字母大写后会被连接到该字符串。
在prompt
的每次调用中,返回的值都存储到name
,这也是一个全局变量。 name
内的fixName()
的值已更改为正确的大小写。
由于函数fixName()
被调用两次并且fullName
在全局范围内声明,因此fixName()
的输出两次都被添加到变量fullName
。第一个名字的拳头,姓氏的第二个名字(第二个名字)。最后,fullName
应该包含Firstname Lastname
(在开头有一个额外的空格)。
答案 2 :(得分:0)
代码是丑陋的,使用所谓的“副作用”,对全局变量进行操作,没有函数参数或函数结果。它用fullName
填充空格,大写的名字,空格,大写的第二名。
使用以下内容会使全局变量变得不必要。
function capitalized(s) {
if (s == "") return "";
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
答案 3 :(得分:0)
调整原始代码:
window.onload = function(){
var names = {}, result = '';
function fixName(input){
return input.substr(0, 2).toUpperCase()
}
names.first = window.prompt("What is your first name?")
names.last = window.prompt("What is your last name?")
for(var n in names){
var nameValue = names[n];
result += fixName(nameValue)
}
console.log(result)
}
其他人会说明有更好的方法,但这是基于你所写的内容。快乐的Javascripting:)