javascript中的字符串操作给出错误

时间:2013-09-02 18:11:11

标签: javascript string

我有这个疑问,这段代码应该将单词中的第一个字符变为大写

function ucFirst(str) {
    var newStr = str.charAt(0).toUpperCase();
    for (var i = 1; i < str.length; i++) {
        newStr += str.charAt(i);

    }

    return newStr
}
alert(ucFirst("john"));

这将打印出“John”以及控制台中的undefined。

现在我尝试使用数组值完全相同的东西

function ucFirst(str) {
    var newStr = str.str[0].toUpperCase();
    for (var i = 1; i < str.length; i++) {
        newStr += str.str[i];
    }
    return newStr;
}
alert(ucFirst("john"));

我在控制台"Cannot read property '0' of undefined"

中收到此错误

为什么会这样?

2 个答案:

答案 0 :(得分:1)

str.str[0].toUpperCase();

应该只是

str[0].toUpperCase();

如果情况并非如此,您应该尝试console.log(str)并找出str到底是什么,但我相信这是您的问题。

答案 1 :(得分:1)

有效。将str.str[的所有实例替换为str[

它读取未定义因为您在对象上下文中调用字符串并尝试引用属性str,该属性不是属性,因此undefined。类对象上没有String.str,你传递的字符串 object (松散地使用的对象)上也没有str.str


注意:我想补充说,在进行替换时修复您的代码,这不是应用正确版本转换的最佳方式。