recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - La fonction de répétition signale une erreur Valeur de comptage invalide selon les spécifications ES6

Le programme est le suivant. Il peut s'exécuter et produire des résultats, mais il signalera une erreur... C'est très étrange et je ne sais pas par où commencer...

Code :

function pad(str, len) { 

    return '0'.repeat(len-str.length) + str 
}

function numberAndIPaddress(s){

    if (s.indexOf('.')) {

        let numbers = s.split('.').map(x=>{ return pad( parseInt(x).toString(2), 8 ) })
        
        return parseInt( numbers.join(''), 2 )

    } else {

        let number = pad( parseInt(s).toString(2), 32 )

        return     [     parseInt( number.slice(0,      8), 2),
                    parseInt( number.slice(9,     16), 2),
                    parseInt( number.slice(17,     24), 2),
                    parseInt( number.slice(25,     32), 2)     

                ].join('.')
    }
}

console.log( 'result', numberAndIPaddress("10.0.3.193") )
// console.log( numberAndIPaddress("167969729") )

Sortie :

迷茫迷茫2791 Il y a quelques jours923

répondre à tous(1)je répondrai

  • 欧阳克

    欧阳克2017-06-07 09:26:02

    Essayez-le. Actuellement, votre code s'exécute sans aucun problème. Mais si vous exécutez le code que vous avez commenté, vous obtiendrez une erreur très similaire à la capture d'écran, car len-str.length est un nombre négatif. Vous pouvez le déboguer et voir.

    De plus, bien qu'eslint puisse également signaler cette erreur, il n'apparaît pas dans votre message d'erreur qu'elle provient d'eslint.
    Vous pouvez d'abord vous référer à ce problème : https://github.com/eslint/esl...
    Cela peut arriver dans la ligne suivante :

    return     [     parseInt( number.slice(0,      8), 2),
                        parseInt( number.slice(9,     16), 2),
                        parseInt( number.slice(17,     24), 2),
                        parseInt( number.slice(25,     32), 2)     
    
                    ].join('.')  // <------ 这里

    répondre
    0
  • Annulerrépondre