我有這樣的代碼:爲什麼字符串有時會變成javascript中的數字?
function getSessionGUID() {
return (S4()+S4());
}
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
它清楚地返回一個字符串,但如果你運行了一堆的時候,你可以看到,它有時會返回無窮大。
for (var i = 0; i < 100000; i++){ if(getSessionGUID() == Infinity) console.log("INFINITY"); }
871 x INFINITY
然後我發現,如果你刪除| 0,它解決了這個問題:
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
結果:
for (var i = 0; i < 100000; i++){ if(getSessionGUID() == Infinity) console.log("INFINITY"); }
undefined
爲什麼會出現這種情況?在這兩種情況下,該值都被更改爲一個字符串。
是隨機的,或在'i'的特定值? –