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):
设置毫秒时间戳。