为什么我得到逗号在我的返回值?JavaScript名人姓名揭示器
Why am I getting commas in my return value? JavaScript Celebrity Name Revealer
这是我的代码,我在返回的消息中的名字之间得到逗号
CodePen: Celebrity Name Revealer
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker () {
msg = "The name is ";
for (i=0; i<arguments.length; i++){
msg += arguments[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));
我希望在它们之间有一个空格,但是如果你改变我添加的字符串中的空格,比如说一个感叹号,你会看到它只是附加到整个短语的末尾,这也让我感到困惑。
我创建了一个代码笔。
CodePen: Celebrity Name Revealer
对于这个问题,我最终得到了以下解决方案:
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameRevealer (names) {
msg = "This celebrity's real name is ";
for (i=0; i<names.length; i++){
msg += names[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));
在本例中,arguments
是一个数组的数组(只有一个项)。要解决这个问题,请重新定义nameMaker:
var nameMaker = function(names) {
return 'The name is ' + names.join(' ');
};
还有一些关于你的代码的其他反馈:
- 你应该总是用"var"来声明变量;你定义"msg"answers"i"的方式使它们成为全局变量,因为你没有使用"var"。
- 当通过重复迭代构造字符串时,使用列表作为构建器然后使用'join'函数通常更快(如果您只是连接少量固定数量的字符串,那么简单地使用'+'就可以了;然而,如果你在for循环中做+=,切换到'push'和'join')。
arguments
变量是一个数组:您正在传递一个数组作为第一个参数。正在发生的事情是,它正在迭代arguments
数组,并对每个名人的数组调用. tostring(),它会自动添加逗号。您需要的是迭代arguments[0]
。
类似:
for (var i=0; i < arguments[0].length; i++) {
msg += arguments[0][i] + " ";
}
看看这个小提琴http://jsfiddle.net/JayKandari/xdNLj我只是复制了你的小提琴,做了一点改变。这是你想要的吗?名字之间有空格吗?
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker (names) {
msg = "The name is ";
for (i=0; i<names.length; i++){
msg += names[i] + " ";
}
document.getElementById("message").innerText = (msg);
return(msg);
}
nameMaker(MarilynMonroe);
nameMaker(WoodyAllen);
nameMaker(MegRyan);
Javascript已经将arguments
作为数组,所以您不需要传递数组。
像这样调用你的函数
console.log(nameMaker("Norma", "Jean", "Mortensen"));
或
改变你的功能,添加一个参数names
,并在names
上执行操作,而不是arguments
。
添加参数变量function nameMaker (name)
然后将所有argument
更改为name
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker (name) {
msg = "The name is ";
for (i=0; i<name.length; i++){
msg += name[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));
相关文章:
- Javascript返回值只在循环中返回一次
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- 将 javascript 返回值插入 html
- 从表单javascript返回值时出现问题
- 如何将javascript返回值分配给razor变量
- 将javascript返回值传递给MVC 4中的控制器
- 函数的JavaScript返回值
- HTML5输入类型radio向Javascript返回值
- 如何将客户端javascript返回值传递给ASP经典服务器端
- javascript返回值总是未定义的
- 在 java 中捕获 javascript 返回值
- 将函数的 JavaScript 返回值存储到服务器端的相应 Asp Control OnClick 事件
- WKWebView评估JavaScript返回值
- Javascript-返回值或使用回调函数
- JavaScript返回值:What dos<>意思是
- 在trick中使用javascript返回值
- 如何在承诺javascript返回值
- 如何在html中使用JavaScript返回值
- 从javascript返回值到html