对象:封装一组类型的数据,提供一组方法(操作API)。
1.Math对象(与上面定义的对象不太一样)
专门执行数学计算的对象,封装了数学计算中常用的常量。
(1)取整
1.上取整:Math.ceil(n);
2.下取整:Math.floor(n);
3.四舍五入:Math.round(n);
round vs toFixed(都是取整)
round:Math对象; 只能取整; 返回数字。
Fixed:Number对象;按任意小数位取整;返回字符串。
(2)乘方/开平方
1. Math.pow(n,m):n的m次方。
2. Math.sqrt(n,m):n的平方根。
(3)获取最大/最小值(将一组数全部列出)
Math.max(a,b,c....)
Math.min(a,b,c....)
固定套路:变相实现获取数组中最大值:
Math.max.apply(Math,arr);—>(等价于) Math.max(arr[0],arr[1],....)
(4)随机数
n = Math .random();n属于 [0,1)。
在任意min到max之间取一个随机整数(包含min、max):
parseInt(Math.random() * (max - min + 1) + min);
或Math.floor(Math.random() * (max - min + 1)) + min;
2.Date对象
封装了一个时间点,提供了对时间和日期的操作API。
Date中封装的是,从1970年1月1日0点0分0秒至今的毫秒数。
(1)创建Date对象
1. var now = new Date();获得当前时间
2. var time = new Date("xxxx/xx/xx [xx:xx:xx]");
3. var time = new Date(年,月-1,日 [,时,分,秒]);
date.getTime():获得日期对象中的毫秒数。
3.异常/错误处理
程序发生错误时,保证程序不退出或正常退出。
(1)如何错误处理:tryCatch块
try{
//可能出错的代码段
}catch(err){ //仅在发生错误时才执行
//一旦发生错误err中就会自动存入Error对象
//1.记录/显示错误的信息
//2.继续向调用者抛出异常
}[finally{ //无论对错,一定会执行的代码段
//一般用于,释放资源
}]
(2)何时定义错误处理:某段只要有可能出错,都要包在tryCatch块中。
(3)建议:尽量优先使用if...else结构判断已经预知的错误;只有无法预知的错误,才用 try catch。
(4)抛出自定义异常:throw new Error("自定义错误消息")
比如:如果程序员甲定义了一个方法,被程序员乙调用,如果乙错误的使用甲的方法,甲的方法中就要抛出自定义错误消息,乙在调用时,就要将甲的方法包在try块中。
理解:用户调用fun2,并向其输入一个input(任意类型内容),fun2中调用fun1(输出一个数字)。
因为fun1的输入必须是数字,但是调用者不一定知道参数必须是数字,所以在调用fun1的过程中可能传入非数字的参数,导致程序出错。
所以需要给fun1一个自我保护机制,让fun1主动抛出异常,告诉fun1的调用者(fun2),在调用fun1的过程中如果传入的参数不是数字,就会出错。
因为fun1抛出异常,即知道调用fun1时有可能出错,所以在fun2中将调用fun1的程序放在了try catch块中。
//fun1——功能:输出一个数字
function fun1(num){
if(isNaN(num)){
throw new Error("该函数接受的参数必须是数字"); //抛出自定义异常
}else{
alert(num); //如果输入是数字,正常显示
}
}
function fun2(input){
try{
fun1(input); //将有可能出错的代码放在try块中
}catch(err){
alert("必须输入数字"); //如果传入的是非数字,会向用户展示的内容
console.log(err.toString()); //如果传入的是非数字,在控制台输出自定义的错误信息
}
}