目录
一、Math对象
专门提供了数学计算的API
强调:不需要创建,直接使用
属性:Math.PI === 3.1415926我们不需要自己创建保存这个数字,浏览器自带
API:
1、取整: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):优点:可以四舍五入保留指定的小数位数
缺点:结果是一个字符串,建议搭配上一个parseFloat
笔试题:不允许用toFixed的情况下,自己封装一个函数,实现toFixed的功能并且最后返回的是一个数字:
看用户要保留几位小数,我们就拿着那个数字*10的几次方,使用Math.round四舍五入取整,最后/10的几次方
function sswr(num,d){
num*=Math.pow(10,d);
num=Math.round(num);
num/=Math.pow(10,d);
return num.toString();
}
2、乘方和开方
乘方:Math.pow(底数,幂); - 简化连乘的写法
开方:Math.sqrt(num); - 只能开平方
3、最大值和最小值:
var 最大/最小的=Math.max/min(a,b,c,d,e,....);
问题:本身不支持数组参数
解决:固定用法:var 最大/最小的=Math.max/min.apply(Math,arr);
apply其中一个作用是可以将数组打散为单个元素
4、绝对值:把负数转为正数
Math.abs(-1);//1
5、随机数:
Math.random(); //在0-1之间取出一个随机小数 - 只要以后网站中某一块既有随机的功能一定需要用到随机数方法
可能取到0,但是不可能取到1,意味着取不到最大值
公式:parseInt(Math.random()*(max-min+1)+min);
二、Date:日期对象
1、创建(四种)
① 创建一个当前日期时间
var now=new Date();
② 创建一个自定义时间:
var birth=new Date("yyyy/MM/dd hh:mm:ss");
③ 创建一个自定义时间:
var birth=new Date(yyyy,MM-1,dd,hh,mm,ss);//修改月份,从0开始的,0->1月
④ 复制一个日期:
日期的所有的API都是直接修改原日期的,无法获得修改之前的日期
解决办法:在执行API之前先进行赋值,然后再操作复制后的日期
var end=new Date(start);
2、操作:
① 两个日期对象之间可以相减,得到一个毫秒差,换算出自己想要的某一部分 - 日期的本质其实就是保存的一个毫秒数
创建的最后一个方式:var date=new Date(毫秒数);
②API:
分量:时间的单位
年日月星期:FullYear Month Date Day
时分秒毫秒:Hours Minutes Seconds Milliseconds
每一个分量都有一堆getXXX/setXXX
其中getXXX负责获取某一个分量的值
其中setXXX负责设置某一个分量的值
特殊:
(1)取值范围:
FullYear:当前年份的数字
Month:0~11
Date:1~31
Day:0~6,外国人的眼里星期天才是一周的第一天
Hours:0~23
Minutes,Seconds:0~59
(2)Day,没有set方法
③ 如果希望对某个分量进行加减计算
date.setXXX(date.getXXX()+/-n)
④ 格式化日期为字符串:
date.toLocaleString();//本地日期格式(具有兼容性问题,解决:自定义format方法)