javascript - Fungsi ulangan melaporkan ralat Nilai kiraan tidak sah di bawah spesifikasi ES6
迷茫
迷茫 2017-06-07 09:24:02
0
1
894

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:

迷茫
迷茫

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

membalas semua(1)
学霸

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('.')  // <------ 这里
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan