2013-12-18 181 views
1
<!doctype html> 
<html lang="en"> 
<head> 
<title>Phrase-o-matic</title> 
<meta charset="utf-8"> 
<style> 
body { 
    font-family: Verdana, Helvetica, sans-serif; 
} 
</style> 
<script> 

function makePhrases() { 
    var words1 = ["24/7", "multi-Tier", "30,000 foot", "B-to-B", "win-win"]; 
    var words2 = ["empowered", "value-added", "oriented", "focused", "aligned"]; 
    var words3 = ["process", "solution", "tipping-point", "strategy", "vision"]; 

    var rand1 = Math.floor(Math.random() * words1.length); 
    var rand2 = Math.floor(Math.random() * words2.length); 
    var rand3 = Math.floor(Math.random() * words3.length); 

    var phrase = words1[rand1] + " " + words2[rand2] + " " + words3[rand3]; 
    var phraseElement = document.getElementById("phrase"); 
    phraseElement.innerHTML = phrase; 
} 
window.onload = makePhrases; 
</script> 
</head> 
<body> 
<h1>Phrase-o-Matic says:</h1> 

<p id="phrase"></p> 

</body> 
</html> 

這是一本書,我對JavaScript的閱讀爲例爲什麼用:爲什麼這個JavaScript代碼工作?

var rand1 = Math.floor(Math.random() * words1.length); 
    var rand2 = Math.floor(Math.random() * words2.length); 
    var rand3 = Math.floor(Math.random() * words3.length); 

生成始終向下舍到的指數值在陣列words1words2words3值?爲什麼它從未得到高於最後索引號的值4

+0

Protip:'~~'='Math.floor()' –

+1

他們曾經說過'''over'OR' – Sir

+0

Reading Head First HTML5,不是嗎? – MultiplyByZer0

回答

2

Math.random() * words1.length意味着[0, words1.length)。所以這個值總是小於words1.length

+0

ohhh好的,謝謝感謝 – Justin

1

floor()向下舍入(總是向下)到最接近的整數。 Math.random()會生成一個大於或等於0且小於1的數字。

如果長度爲4,則random()將生成一個介於0和3.9999999999之間的數字並向下舍入。因此,對於4元素數組,該值始終是有效索引(0到3)。

0

Math.random()返回0(含)和1(不含)之間的值。所以你可能會得到例如0.1234。然後,將這個數乘以在這種情況下爲4的數組長度。可能的最小值是0 * 4 = 0,最高可能值是0.9999 * 4 < 4.

floor函數將截斷數字,只留下整數部分,其範圍爲0,1,2或3.

0

Math.random()返回在[0,1),這意味着一個浮點值:

從0(含)直到但不包括1(不包括)

所以數學式隨機()* 4將是[0,4),a ND Math.floor指:

的最大整數是小於或等於的數

所以Math.floor([0,3.xxxx ...])是指[0,3]

相關問題