簡體   English   中英

一旦應用於 var,Math.random 返回相同的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM