Math对象
- 专门提供了数学计算的API
- 强调:不需要创建,直接使用
- 属性:Math有一些属性,涉及到科学计数法,但是几乎用不到,只有Math.PI有可能用到 === 3.1415926...这一串数字我们不需要自己创建,浏览器自带
API
取整:3种
-
上取整:超过一点点,就取下一个整数
var num=Math.ceil(num);
//小数位数不能超过15位,否则此方法只能取整,不能上取整
-
下取整:无论超过多少,都会省略小数部分
var num=Math.floor(num);
-
四舍五入取整:
var num=Math.round(num);/
/只看小数位数的第一位
-
以上三个方法都是垃圾:都是在取整,只能取整
-
取整的方式:以上三个+
parseInt(str去掉单位
)+num.toFixed(d);
-
num.toFixed(d);
-
优点:
- 可以四舍五入,并且保留指定小数位数,d其实就是保留的小数位数
- 解决浏览器带来的舍入误差,2-1.6=0.39999999这种情况就可以使用toFixed来解决
-
缺点:结果是一个字符串,建议搭配上
parseFloat()
使用 -
不允许使用toFixed的情况下,自己封装一个函数,由用户传入数字和保留位数,实现四舍五入操作:
function toFixed(num,d){ num*=(10**d); num=Math.round(num); num/=(10**d); return num; } var result=toFixed(Math.PI,2); console.log(result);
-
乘方和开方
- 乘方:
Math.pow(底数,幂);
-> 更简化:底数**幂 - 开方:
Math.sqrt(num);
- 仅仅只能开平方
最大值和最小值
var max/min=Math.max/min(a,b,c,d,e,f,g,...);
//自动在你传入的数字中比较出最大值或最小值- 问题:本身不支持数组参数
- 解决:固定用法:
Math.max/min.apply(Math,arr);/
/apply具有打散数组的功能
绝对值
- 把负数转为正数
Math.abs(-1);
//1
随机数
Math.random();
在0-1之间取一个随机的小数- 搭配上parseInt,只能取到0,但是不可能取到1,意味着取不到最大值
- 公式:
parseInt(Math.random()*(max-min+1)+min)
- 强调:只要以后网页中某一块有随机的功能,他的底层一定用到了随机数
Date对象
- 日期对象,提供了操作日期和时间的API
创建:4种
- 创建一个当前日期:
var now=new Date();
- 创建一个自定义时间:
var birth=new Date("yyyy/MM/dd hh:mm:ss");
- 创建一个自定义时间:
var birth=new Date(yyyy,MM,dd,hh,mm,ss);
//修改月份,从0~11,0代表1月 - 复制一个日期
- 为什么:日期的所有API都是直接修改原日期的,无法获得修改之前的日期
- 所以,在执行API之前先进行复制,然后再操作复制后的日期:
var end=new Date(start);
- 创建日期的最后一种方式,绝对没人用:var date=new Date(毫秒数);//计算机元年:1970年1月1日 8点整
使用:2类
倒计时的关键
- 两个日期对象之间,可以相减(大-小),得到一个毫秒差,换算出自己想要的任何一部分 - 日期的本质其实就是保存了一个毫秒数
API:
- 分量:时间的单位
- 年月日星期:
FullYear
Month
Date
Day
- 时分秒毫秒:
Hours
Minutes
Seconds
Milliseconds
- 每一个分量都有一对儿getXXX/setXXX的方法
- 年月日星期:
- 特殊:
- 取值范围:
FullYear
- 当前年份的数字Month
- 0~11Date
- 1~31- Day - 0~6:0代表是星期天,外国人的眼里星期天才是一周的第一天
Hours
- 0~23Minutes
、Seconds
:0~59- 设置超出范围,他很聪明,会自动进制
Day
,没有set方法- 如果希望对某个分量进行加减操作
date.setXXX(date.getXXX()+/-n)
- 格式化日期为本地字符串:
date.toLocaleString();
- 垃圾:具有兼容性问题,我们一般会选择自己创建一个格式化方法来格式日期- 用了此方法会失去一些东西:日期的自动进制、日期的API
- 也会获得一些东西:字符串的API
- 取值范围:
定时器
周期性定时器
- 每过一段时间就会执行一次,先等后做
- 开启:
timer=setInterval(callback,间隔毫秒数);
- 停止:
clearInterval(timer);
- 开启:
一次性定时器
- 等待一段时间,只会做一次就结束了
- 开启:timer=setTimeout(callback,间隔毫秒数);
- 停止:clearTimeout(timer);
同步、异步
- 同步技术:代码必须一行一行的执行,前面没做完,后面就等着
- 定时器是我们第一次见到的异步技术:无论我这一块代码多么的耗时,也不会卡住后续代码