Math
Math
是 JavaScript 的原生对象,提供各种数学功能。
Math对象的属性
Math
对象的静态属性,提供以下一些数学常数。(这些属性都是只读的)
Math.E
:自然对数的底数,即常数e
。Math.LN2
:2 的自然对数。Math.LN10
:10 的自然对数。Math.LOG2E
:以 2 为底的e
的对数。Math.LOG10E
:以 10 为底的e
的对数。Math.PI
:常数 π。Math.SQRT1_2
:1/2 的平方根(即2的平方根的倒数)。Math.SQRT2
:2 的平方根。
一些方法
min()和max()
Math.max
方法返回参数之中最大的那个值,Math.min
返回最小的那个值。如果参数为空, Math.min
返回Infinity
, Math.max
返回-Infinity
。
1 | Math.max(2, -1, 5) // 5 |
舍入方法:Math.ceil(), Math.floor(), Math.round()
- Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
- Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
- Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数;
1 | Math.floor(3.2) // 3 |
random()
Math.random()
返回0到1之间的一个伪随机数,可能等于0,但是一定小于1。
1 | // 返回给定范围内的随机数 |
其他方法
Math.abs()
:绝对值Math.pow()
:指数运算Math.sqrt()
:平方根Math.log()
:自然对数Math.exp()
:e的指数Math.sin()
:返回参数的正弦(参数为弧度值)Math.cos()
:返回参数的余弦(参数为弧度值)Math.tan()
:返回参数的正切(参数为弧度值)Math.asin()
:返回参数的反正弦(返回值为弧度值)Math.acos()
:返回参数的反余弦(返回值为弧度值)Math.atan()
:返回参数的反正切(返回值为弧度值)
实用示例:
写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0
~255.255.255.255
。
1 | function getRandIP() { |
写一个函数,生成一个随机颜色字符串,合法的颜色为#000000
~ #ffffff
。
1 | function getRandColor(length) { |
写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
1 | function getRandStr(len) { |
Date
Date
对象是 JavaScript 原生的时间库。它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)。
静态方法
Date.now()
Date.now
方法返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000。
1 | Date.now() // 1537068255217 |
Date.parse()
Date.parse
方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。
日期字符串应该符合 RFC 2822 和 ISO 8061 这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ
格式,其中最后的Z
表示时区。但是,其他格式也可以被解析,请看下面的例子。
1 | Date.parse('Aug 9, 1995') |
上面的日期字符串都可以解析。
如果解析失败,返回NaN
。
1 | Date.parse('xxx') // NaN |
Date.UTC()
Date.UTC
方法接受年、月、日等变量作为参数,返回该时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数。
1 | // 格式 |
该方法的参数用法与Date
构造函数完全一致,比如月从0
开始计算,日期从1
开始计算。区别在于Date.UTC
方法的参数,会被解释为 UTC 时间(世界标准时间),Date
构造函数的参数会被解释为当前时区的时间。
to类
.toString()
返回一个完整的日期字符串。
.toUTCString()
返回对应的 UTC 时间,也就是比北京时间晚8个小时。
.toISOString()
返回对应时间的 ISO8601 写法。
.toJSON()
返回一个符合 JSON 格式的 ISO 日期字符串,与toISOString
方法的返回结果完全相同。
.toDateString()
返回日期字符串(不含小时、分和秒)。
.toTimeString()
返回时间字符串(不含年月日)。
.toLocaleDateString()
返回一个字符串,代表日期的当地写法(不含小时、分和秒)。
.toLocaleTimeString()
返回一个字符串,代表时间的当地写法(不含年月日)。
get类
1 | 所有这些get方法返回的都是整数,不同方法返回值的范围不一样。 |
getTime()
:
返回实例距离1970年1月1日00:00:00的毫秒数,等同于valueOf
方法。
getDate()
:
返回实例对象对应每个月的几号(从1开始)。
getDay()
:
返回星期几,星期日为0,星期一为1,以此类推。
getYear()
:
返回距离1900的年数。
getFullYear()
:
返回四位的年份。
getMonth()
:
返回月份(0表示1月,11表示12月)。
getHours()
:
返回小时(0-23)。
getMilliseconds()
:
返回毫秒(0-999)。
getMinutes()
:
返回分钟(0-59)。
getSeconds()
:
返回秒(0-59)。
getTimezoneOffset()
:
返回当前时间与 UTC 的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
set类
setDate(date)
:
设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
setYear(year)
:
设置距离1900年的年数。
setFullYear(year [, month, date])
:
设置四位年份。
setHours(hour [, min, sec, ms])
:
设置小时(0-23)。
setMilliseconds()
:
设置毫秒(0-999)。
setMinutes(min [, sec, ms])
:
设置分钟(0-59)。
setMonth(month [, date])
:
设置月份(0-11)。
setSeconds(sec [, ms])
:
设置秒(0-59)。
setTime(milliseconds)
:
设置毫秒时间戳。