2017-12-04 19 views
0

JavaScriptのString型に逆関数を作成しようとしています。私のコードは、私が"test".reverse();varが未定義になる問題

代わりに「TSET」それは

「undefinedtset」を与えているを与えるように、たとえばそれを使用しようとすると、私は変数を設定しています

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

のようなものですvar s = ""のように。関数の中でまだ未定義が来ています。それはなぜそうですか?

答えて

5

配列が位置0から始まるので、あなたはただ、var i=this.length-1var i=this.lengthを変更する必要があります。

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

this.lengthはあなたに4を与える(test語の4文字)、あなたは4から0に反復処理を開始します。

4インデックスの下に何も存在しないという問題があります(文字は0-3の位置に格納されます)。

で試してみてください:

for (var i = this.length - 1; i >= 0; i--) { 
    s += this[i]; 
} 
2

あなたのコードが動作しない理由は、既に他の人が回答されているが、あなたは逆の短いバージョンをしたい場合、あなたはこのようにそれを行うことができます。

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

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

関連する問題