[英]Math.random is returning the same number once applied to a var
Math.random
似乎在控制台中運行良好。 即使我將Math.floor
應用於它,也沒有問題。 但是,一旦我為代碼分配了一個var
。 我只是得到相同的號碼返回。 我寫的例子:
數學.隨機(); <0.2650735060984091
數學.隨機(); <0.23735521448696772
數學.隨機(); <0.690841980599159
Math.floor(Math.random() * 10); <8
Math.floor(Math.random() * 10); <7
Math.floor(Math.random() * 10); <1
var x = Math.floor(Math.random() * 10);
<未定義
X; <4
x <4
x <4
x <4
當我分配任何var
時, output 始終為 4 。
我怎么解決這個問題?
您正在做的是存儲Math.floor(Math.random() * 10);
的值在x
。 它沒有調用Math.floor(Math.random() * 10);
每次你使用 x。 這是相同的值。 為此,您需要有一個 function 以便您可以調用Math.floor(Math.random() * 10);
每次。
function randomFloor() { return Math.floor(Math.random() * 10) } console.log(randomFloor() < 4) console.log(randomFloor() < 4) console.log(randomFloor() < 4) console.log(randomFloor() < 4) console.log(randomFloor() < 4)
通過給變量賦值,JavaScript 解釋器必須計算右邊的表達式。
所以 JavaScript 計算一次表達式Math.floor(Math.random() * 10)
的結果並將其放入變量x
中。 該變量現在保存該值。 當您在控制台中鍵入x
時,您總是在分配時獲得此值。 這就是變量(重用值)的概念。
如果您想要x
中的不同值,則需要分配一個新值(例如,通過再次調用x = Math.floor(...)
。
如果您需要一個可以重用的邏輯封裝,您可以定義一個 function:
function getMyRandomValue() {
return Math.floor(Math.random() * 10);
}
在控制台中,重復鍵入getMyRandomValue()
。
您可以將結果分配給一個變量,例如var y = getMyRandomValue()
但同樣,變量y
獲取由 function 調用返回的值,然后保存該值。
PS:我建議你拿一本好的編程入門書。 您應該正確掌握這些基礎知識:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.