Math
专门提供了数学计算的API,不需要创建,直接使用
唯一的属性
Math.PI
API
1.取整
-
上取整(超过一点就会取下一整数)
Math.ceil(num) -
下取整(超多多少都会省略小数部分)
Math.floor(num)- 上取整和下取整针对的对象小数位数都不能超过15位,超过会失效
-
四舍五入取整
Math.round(num)四舍五入:
num.toFixed(d);即可四舍五入,又可自定义小数位数。结果为字符串parseFloat(num.toFixed(d));
//封装一个函数,实现可自定义保留小数位数且四舍五入
function round(num,d){
num*=Math.pow(10,d);
num=Math.round(num);
num/=Math.pow(10,d);
return num;
}
console.log(round(Math.PI,3));
2.乘方和开方
-
乘方
Math.pow(底数,幂) -
开方
Math.sqrt(num)只能开平方
3.最大值/最小值
Math.max/min(a,b,c,d,...)
问题:不支持数组参数 ==> 解决:Math.max/min.apply(Math,arr);
apply:①自己没有的方法,可以去借用;②可将数组打散为单个参数进行传入
4.绝对值
Math.abs(num) 将负数转为正数
5.随机数
Math.random(); 0-1的随机数(可能取到0,但无法取到1)
只要页面具有随机功能,底层均为随机数
重要使用方法
Math.random()*(max-min+1)+min;
parseInt(Math.random()*(max-min+1)+min);
Date
封装了日期对象,提供了对日期事件进行操作的API
创建日期对象
-
当前时间
var now=new Date(); -
自定义时间1
var birth=new Date("yyyy/mm/dd h:m:s");-
自己创建,放入“年/月/日 时:分:秒”
-
时分秒可以省略,未写时默认00:00:00
-
-
自定义时间2
var birth=new Date(yyyy,mm,dd,h,m,s);- 月份需要修正,默认从0开始到11
-
复制一个日期对象
var end=new Date(now);- 因为日期对象的API都是直接修改原对象,使用API后无法保存旧值,调用API后无法保存旧值 => 调用API前先复制保存
-
var x=new Date(毫秒数);
计算器保存的时间初始值:1970年1月1日 8:00:00
操作
1.减法
两个日期对象相减,得到的是毫秒差 ==> 日期对象保存的是毫秒
2.API
分量:FullYear Month Date Day Hours Minutes Seconds
-
每一个分量都有一对方法
getxx/setxx ()-
取值范围:年(当前年份)、月(0-11)、日、时(0-23)、分(0-59)、秒(0-59)
-
星期Day:只有get,没有set,取值0-6(0是星期天)
-
-
对某个日期直接做加减
date.setFullYear(date.getFullYear()+3); -
将日期格式化为字符串
date.toLocaleString();
+ 优点:转为String,可以使用String的API
+ 缺点:具有浏览器兼容性
解决:自定义format函数
Number Boolean
所有引用类型底层都具有构造函数创建方式(除Math),直接量法是后续追加的简化操作
var num=new Number();
var bool=new Boolean();
num.toString();
num.toFixed(d);//结果是一个字符串
Error
1.浏览器自带的4种错误类型
-
语法错误:SyntaxError --常为符号错误
-
引用错误:ReferenceError --未创建就使用了
-
类型错误:TypeError --有这个方法,但不是这个类型的方法
-
范围错误:RangeError --只有num.toFixed(d)会有这个错误,d的范围:0-100
2.错误处理
当程序发生错误时,保证程序不会异常中断的机制
try{
可能出错的代码
}catch(err){
console.log(err);//提示用户错误的原因
}
但try...catch语句执行效率低 ==> if...else
3.抛出自定义错误
throw new Error("自定义错误信息")