为什么我得到逗号在我的返回值?JavaScript名人姓名揭示器

Why am I getting commas in my return value? JavaScript Celebrity Name Revealer

本文关键字:JavaScript 返回值 我的 为什么      更新时间:2023-09-26

这是我的代码,我在返回的消息中的名字之间得到逗号

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"。
  1. 当通过重复迭代构造字符串时,使用列表作为构建器然后使用'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));