Math对象
1.Math对象的使用
关于Math对象的使用:
Math
是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math
不是一个函数对象。
Math
用于 Number
类型。它不支持 BigInt
。
它表示构造函数,不需要实例化对象,可以直接使用其静态属性和静态方法
Math对象的常用属性和方法
成员 | 作用 |
---|---|
Math.PI | 获取圆周率,结果为3.141592653589793 |
Math.abs() | 获取x的绝对值,可传入普通数值或是用字符串表示的数值 |
Math.pow(base,exponent) | 获取基数(base)的指数(exponent)次幂, 即是baseexponent |
sqrt(x) | 获取x的平方根 |
Math.ceil() | 获取大于或等于x的最小整数,即向上取整(舍弃小数部分,整数部分加1) |
Math.floor() | 获取小于或等于x的最大整数,即向下取整(舍弃小数部分,整数部分不变) |
Math.round() | 四舍五入(就近取整)-3.5结果是-3 |
Math.random() | 获取大于或等于0.0且小于1.0的随机值 |
Math.max()/Math.min() | 求所有参数中的最大值或最小值 |
示例代码:
Math.PI; //获取圆周率
Math.abs(-1); //获取绝对值 返回结果是:1
Math.abs('-24') //获取绝对值,简子服装换成数字类型 返回结果是:24
Math.max(1,2,7,3,5);//获取最大值 返回结果是:7
Math.min(3,2,9,4,5);//获取最小值 返回结果是:2
Math.pow(2,4);//获取基数(base)的指数(exponent)次幂 返回结果是:2的4次幂:16
Math.sqrt(9);//获取9的平方根 返回结果是:3
Math.ceil(1.1);//向上取整 返回结果是:2
Math.ceil(1.9);//向上取整 返回结果是:2
Math.floor(1.1);//向下取整 返回结果是:1
Math.floor(1.9);//向下取整 返回结果是:1
Math.round(1.1);//四舍五入 返回结果是:1
Math.round(1.5);//四舍五入 返回结果是:2
Math.round(1.9);//四舍五入 返回结果是:2
Math.round(-1.5);//四舍五入 返回结果是:-1(取较大值)
Math.round(-1.6);//四舍五入 返回结果是:-2
生成指定范围的随机数:
Math.random()用来获取随机数,每次调用该方法的返回的结果都不相同.该方法的返回结果是一个很长的浮点数,其范围是0~1(且不包括1)
公式:
-
Math.random()*(max-min)+min,表示生成大于或等于min且小于max 的随机数;
-
Math.random()*(max+1),表示生成0~max之间的随机数(包括max);
-
Math.random()*max+1,表示生成1~max之间的随机数;
示例代码如下:
Math.random()*(3-1)+1 //1<=返回结果<3
Math.random()*(20-10)+10 //10<=返回结果<20
Math.random()*(99-88)+88 //88<=返回结果<99
//获取整数结果
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+max)
}
console.log(2,6) //获取2~6之间的随机整数(包括6)[2,6]
var res1=Math.floor(Math.random()*10+1)//获取[1,10]之间的随机数
//获取数组中的一个随即元素
var ['pink','green','purple','yellow','white']
//调用前面携程getRandom函数
console.log(arr[getRandom(0,arr.length-1)])
猜数字游戏:
程序随机生成一个1~10之间的数字,让用户猜测,并且比较大小
function(min,max){
return Math.floor(Math.random()*(max-min+1)+min)
}
var random=getRandom(1,10)
while(true){ //死循环,只能利用第15行的break跳出循环
let num=+prompt('请输入你猜测1~10的数字')
if(num<random){
alert('不好意思,你猜小了')
}
else if(num>random){
alert('不好意思,你猜大了')
}
else{
alert('恭喜你,猜对啦')
break
}
}
日期对象:
日期对象的使用:
JavaScript中日期对象需要使用new Date()实例化对象才能使用,Date()是日期对象的构造函数.
在创建日期对象时,可为Date()构造函数传入一些参数,来表示具体的日期:
示例代码:
//方式1:当获取当前日期为对象时,不需要传入参数
var date1=new Date();
console.log(date1)
//输出结果是:Sat Apr 15 2023 10:06:48 GMT+0800 (中国标准时间)
//方式2:传入年月日时分秒(月的范围是0~11,则真实月份-1)
var date2=new Date(2023,03,15,10,57,56)
console.log(date2)
//输出结果是:Sat Apr 15 2023 10:57:56 GMT+0800 (中国标准时间)
//方式3:用字符串表示日期和时间
var date3 = new Date('2023-04-15 10:19:55')
console.log(date3)
//输出结果是:Sat Apr 15 2023 10:19:55 GMT+0800 (中国标准时间)
日期对象的常用方法分为get和set两大类:
Date对象的常用get方法:
方法 | 作用 |
---|---|
getFullYear() | 获取表示年份的4位数字,如2020 |
getMonth() | 获取月份,范围0~11(0表示一月,1表示二月,依次类推) |
getDate() | 获取月份中的某一天,范围1~31 |
getDay() | 获取星期,范围0~6(0表示星期日,1表示星期一,依次类推) |
getHours() | 获取小时数,返回0~23 |
getMinutes() | 获取分钟数,范围0~59 |
getSeconds() | 获取秒数,范围0~59 |
getMilliseconds() | 获取毫秒数,范围0~999 |
getTime() | 获取从1970-01-01 00:00:00距离Date对象所代表时间的毫秒数 |
Date对象的常用set方法:
方法 | 作用 |
---|---|
setFullYear(value) | 设置年份 |
setMonth(value) | 设置月份 |
setDate(value) | 设置月份中的某一天 |
setHours(value) | 设置小时数 |
setMinutes(value) | 设置分钟数 |
setSeconds(value) | 设置秒数 |
setMilliseconds(value) | 设置毫秒数 |
setTime(value) | 通过从1970-01-01 00:00:00计时的毫秒数来设置时间 |
示例代码:
// 获取当前时间
var date = new Date();
console.log(date)
// 获取当前年份
var year=date.getFullYear()
console.log(year)
// 获取当前月份
var month=date.getMonth() + 1
console.log(month)
// 获取当前日期
var date2=date.getDate()
console.log(date2)
// 获取当前星期
var day=date.getDay()
console.log(day)
function getMyDate() {
var arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var str = date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日 ' + arr[date.getDay()]
return str
}
var res = getMyDate()
console.log(res)//输出结果:2023年4月15日 星期六
案例:统计代码的执行时间
通过日期对象可以获取从1970年1月1日0时0分0秒开始到当前的UTC时间所经过的毫秒数,这个值可以作为时间戳来使用;
通过时间戳,可以计算出两个时间之间的时间差,还可以用于加密,数字签名等技术中;
//方式1:日期对象的valueOf()或者getTime()方法
var date1=new Date();//valueOf用于获取对象的原始值
console.log(date1.valueOf());//示例结果:1681528726329
console.log(date1.getTime());//示例结果:1681528726329
//方式2:使用“+”运算符转换为数值型
var date2=+new Date();
console.log(date2);//示例结果:1681528726330
//方式3:使用HTML5新增的Date.now()方法
console.log(Date.now());//示例结果:1681528726330
//案例代码:
var timestamp1=+new Date()
for(var i=1,str='';i<=90000;i++){//同时声明变量i和变量str
str+=i
}
var timestamp2=+new Date()
console.log('代码执行时间为:'+(timestamp2-timestamp1)+'毫秒')
//示例结果:代码执行时间:25毫秒
案例2:倒计时
倒计时的核心算法是输入的时间减去现在的时间,得出的剩余时间就是要显示的倒计时时间,这需要吧时间都转化成时间戳(毫秒数)来进行计算,把得到的毫秒数转换为天数,小时,分钟,秒钟:
示例代码:
function countDown(time){
var nowTime=+new Date()
var inputTime=+new Date(time)
var times=(inputTime-nowTime)/1000
var d =parseInt(times/60/60/24)
d = d <10 ? '0'+d:d
var h =parseInt(times/60/60%24)
h = h <10 ? '0'+h:h
var m =parseInt(times/60 %60)
m = m <10 ? '0'+m:m
var s =parseInt(times%60)
s = s <10 ? '0'+s:s
return d+'天'+h+'时'+m+'分'+s+'秒'
}
console.log(countDown('2023-04-15 15:00:00'))
//输出结果:00天03时10分27秒