js知识点梳理-Math/Date/Number/Boolean/Error

141 阅读3分钟

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("自定义错误信息")