-1

我正在尝试返回字符串“Brian Wade Stacks”,代码如下:

var fixName = function(myName) {

    var partsOfName = [
    part1 = myName.substring(0, 5),
    part2 = myName.substring(5, 8),
    part3 = myName.substring(9, myName.length)
    ];

    part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
    part2 = part2.charAt(5).toUpperCase() + part2.slice(1);
    part3 = part3.charAt(9).toUpperCase() + part3.slice(1);

    return(part1+" "+part2+" "+part3);
}


var myName= "brianwadestacks"
console.log("My name fixed is " + myName);

它回来了 我的名字固定是 brianwadestacks

4

2 回答 2

1

你没有打电话fixName;你需要这样做。

console.log("My name fixed is " + fixName(myName));
于 2013-05-30T03:25:42.980 回答
0

没有使用变量partsOfName,那么为什么要创建它呢?此外,part1part2part3在函数运行后被创建为全局变量,因为它们没有被声明。part2的子字符串应该扩展到索引 9(它实际上在指定索引之前立即停止)。从索引到结尾选择时,可以省略结尾索引。考虑:

var part1 = myName.substring(0, 5);
var part2 = myName.substring(5, 9);
var part3 = myName.substring(9);

在您的代码中:

> part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
> part2 = part2.charAt(5).toUpperCase() + part2.slice(1);
> part3 = part3.charAt(9).toUpperCase() + part3.slice(1);

字符索引应该全部为零,因为您想将第一个字符大写,所以:

part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
part2 = part2.charAt(0).toUpperCase() + part2.slice(1);
part3 = part3.charAt(0).toUpperCase() + part3.slice(1);

最后,不要在声明的地方使用函数表达式,有一些细微的差异会让你感到困惑:

function fixName(myName) {

    var part1 = myName.substring(0, 5);
    var part2 = myName.substring(5, 9);
    var part3 = myName.substring(9);

    part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
    part2 = part2.charAt(0).toUpperCase() + part2.slice(1);
    part3 = part3.charAt(0).toUpperCase() + part3.slice(1);

    return(part1+" "+part2+" "+part3);
}

var myName= "brianwadestacks";
console.log("My name fixed is " + fixName(myName)); // My name fixed is Brian Wade Stacks
于 2013-05-30T04:18:11.230 回答