如何使用"for ... in"循环在JavaScript中反转字符串?

hor*_*x88 -5 javascript loops

我有一段JavaScript代码使用for循环来反转字符串.但是,我想知道是否可以使用for in循环,我将如何进行呢?

     function reverse(str){
         var reversedString = '';
         for (var i = str.length - 1; i >= 0; i--){
            reversedString = reversedString + str[i];
     }
     return reversedString;
   }

   alert(reverse('hello'));
Run Code Online (Sandbox Code Playgroud)

sab*_*ker 6

来自MDN Docs

for ... in不应该用于迭代索引顺序很重要的数组.

数组索引只是具有整数名称的可枚举属性,并且与一般对象属性相同.无法保证for ... in将以任何特定顺序返回索引.for ... in循环语句将返回所有可枚举属性,包括具有非整数名称和继承的属性.

因为迭代的顺序是依赖于实现的,所以迭代数组可能不会以一致的顺序访问元素.因此,在迭代访问顺序很重要的数组时,最好使用带有数字索引(或Array.prototype.forEach()或for ... of循环)的for循环.

let iterable = '1234567';
String.prototype.hello = "hello";  // doesn't affect
let reversed = "";
for (let value of iterable) {
  reversed = value + reversed;
}

console.log(reversed);
Run Code Online (Sandbox Code Playgroud)

Feature        Chrome   Edge    Firefox Internet Explorer   Opera   Safari
Basic support   38       12       131       No                25        8
Run Code Online (Sandbox Code Playgroud)

休息for..in(见你好匍匐)

let iterable = '1234567';
String.prototype.hello = "hello";
let reversed = "";
for (let index in iterable) {
  reversed = iterable[index] + reversed;
}

console.log(reversed);
Run Code Online (Sandbox Code Playgroud)