javascript - La fonction de répétition signale une erreur Valeur de comptage invalide selon les spécifications ES6
迷茫
迷茫 2017-06-07 09:24:02
0
1
931

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 :

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
学霸

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('.')  // <------ 这里
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal