Math是JS的內置對象,提供一系列數學常數和數學方法。該對象不是構造函數,不能生成實例,所有的屬性和方法都必須在Math對象上調用。
new Math()
// TypeError: object is not a function
上面代碼表示,Math
不能當作構造函數用。
一、屬性
Math
對象提供以下一些只讀的數學常數。(知道這么回事就好,沒用過)
Paste_Image.png
二、方法
Math
對象提供以下一些常用的數學方法。
Math.max():最大值
Math.min():最小值
Math.floor():向下取整
Math.ceil():向上取整
Math.round():四舍五入
Math.random():隨機數
-
Math.max
方法和Math.min
方法都可以接受多個參數,Math.max
返回其中最大的參數,Math.min
返回最小的參數。
Math.max(2, -1, 5) // 5
Math.min(2, -1, 5) // -1
-
Math.floor
方法接受一個參數,返回小于該參數的最大整數。
Math.floor(3.2) // 3
Math.floor(-3.2) // -4
-
Math.ceil
方法接受一個參數,返回大于該參數的最小整數。
Math.ceil(3.2) // 4
Math.ceil(-3.2) // -3
如果需要總是返回某個數值整數部分的函數,可以自己實現:
function ToInteger(x) {
x = Number(x);
return x < 0 ? Math.ceil(x) : Math.floor(x);
}
上面代碼中,不管正數或負數,ToInteger
函數總是返回一個數值的整數部分。
-
Math.round
方法用于四舍五入。
Math.round(0.1) // 0
Math.round(0.5) // 1
Math.round(0.6) // 1
注意,它對負數的處理,主要是對0.5的處理。
Math.round(-1.1) // -1
Math.round(-1.5) // -1
Math.round(-1.6) // -2
2.1、Math.random()
這個是Math
對象中最靈活也是最常用最重要的方法了。
該方法返回0到1之間的一個偽隨機數(計算機沒有隨機數,都是確定的數),可能等于0,但是一定小于1。
- 任意給定范圍的隨機數生成函數:
function getRandom(min, max){
return Math.random()*(max-min)+min;
}
- 任意給定范圍的隨機整數生成函數:
function getRandom(min, max){
return Math.floor( Math.random()*(max-min+1)+min );
}
- 返回隨機字符:
function random_str(length) {
var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
ALPHABET += 'abcdefghijklmnopqrstuvwxyz';
ALPHABET += '0123456789-_';
var str = '';
for (var i=0; i < length; ++i) {
var rand = Math.floor(Math.random() * ALPHABET.length);
str += ALPHABET.substring(rand, rand + 1);
}
return str;
}
random_str(6) // "NdQKOr"
上面代碼中,random_str
函數接受一個整數作為參數,返回變量ALPHABET
內的隨機字符所組成的指定長度的字符串。
2.2、三角函數方法
Math
對象還提供一系列三角函數方法。
Math.sin():返回參數的正弦
Math.cos():返回參數的余弦
Math.tan():返回參數的正切
Math.asin():返回參數的反正弦(弧度值)
Math.acos():返回參數的反余弦(弧度值)
Math.atan():返回參數的反正切(弧度值)
(本系列下一節為 — JSON對象)