cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Fungsi ulangan melaporkan ralat Nilai kiraan tidak sah di bawah spesifikasi ES6

Program ini adalah seperti berikut Ia boleh berjalan dan menghasilkan hasil, tetapi ia akan melaporkan ralat... Ia sangat pelik dan saya tidak tahu di mana untuk bermula...

Kod:

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") )

Keluaran:

迷茫迷茫2790 hari yang lalu918

membalas semua(1)saya akan balas

  • 欧阳克

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

    Cubalah. Pada masa ini kod anda berjalan tanpa sebarang masalah. Tetapi jika anda menjalankan kod yang anda ulas, anda akan mendapat ralat yang hampir sama dengan tangkapan skrin, kerana len-str.length ialah nombor negatif. Anda boleh nyahpepijat dan lihat.

    Selain itu, walaupun eslint juga mungkin melaporkan ralat ini, ia tidak kelihatan daripada mesej ralat anda bahawa ia datang daripada eslint.
    Anda boleh merujuk isu ini dahulu: https://github.com/eslint/esl...
    Ia mungkin berlaku dalam baris berikut:

    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('.')  // <------ 这里

    balas
    0
  • Batalbalas