为什么“i”会成为循环中的一根字符串

Why does `i` become a string in my loop?

本文关键字:字符串 一根 循环 为什么      更新时间:2023-11-05

为什么我必须将i解析为一个数字和一个变量,以便在str.charAt(i-1)正常工作的情况下让str.charAt(i+1)工作?

这是针对coderbyte"简单符号"的,我花了两个小时才弄清楚i有时是字符串,有时是数字

function SimpleSymbols(str) { 
    // code goes here
    var letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var letterArray=letters.split('');
    var strArray=str.split('');
    var truth=false;
    for (var i in strArray){
        var e=parseFloat(i)+1;
        if (letterArray.indexOf(strArray[i]) > -1){        
            if ((str.charAt(i-1)==='+')&&(str.charAt(e)==='+')){
                truth = true;
            }
        } 
    }

    return truth; 
}
// keep this function call here 
// to see how to enter arguments in JavaScript scroll down
SimpleSymbols(readline());           

+为字符串重载-它也是串联运算符。例如

'5' + 2 // '52'

但CCD_ 6没有以相同的方式过载;它将字符串转换为数字:

'5' - 2 // 3

要回答实际问题:

为什么i会成为我循环中的一个字符串?

因为for...in迭代对象的属性名称,而这些名称总是字符串。有关详细信息,请参阅MDN文档。您还会发现一个大的警告框,其中解释了为什么不将for...in与数组一起使用。