我的var未定义的问题

时间:2017-12-04 14:35:05

标签: javascript

我正在尝试在javascript中为String类型创建一个反向函数。我的代码就像

String.prototype.reverse = function () {
    var s = "";
    for(var i=this.length;i>=0;i--){
            s+=this[i];
    }
    return s;
}

当我尝试使用它时,例如"test".reverse();

而不是给“tset”它给予“undefinedtset”

我将变量设置为var s = "";在函数内部,仍未定义即将到来。为什么会这样?

3 个答案:

答案 0 :(得分:5)

您只需将var i=this.length-1更改为String.prototype.reverse = function () { var s = ""; for(var i=this.length-1;i>=0;i--){ s+=this[i]; } return s; } ,因为数组从位置0开始:

{{1}}

答案 1 :(得分:3)

4为您提供test4字中的4个字母),您开始从04进行迭代。

问题是0-3索引下没有任何内容(您的字母存储在for (var i = this.length - 1; i >= 0; i--) { s += this[i]; } 位置)。

尝试:

str = '''
Here are some order bullets:
i. Foo
ii. Bar
iii. Baz
iv. YOLO
...
x. LOL
'''

答案 2 :(得分:2)

您的代码无法正常工作的原因已被其他人解答,但如果您想要更短版本的反向,您可以这样做:

String.prototype.reverse = function(){
  return this.split('').reverse().join('');
}

console.log('Hello World'.reverse())