我正在尝试在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 = ""
;在函数内部,仍未定义即将到来。为什么会这样?
答案 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
为您提供test
(4
字中的4个字母),您开始从0
到4
进行迭代。
问题是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())