1.保留小数
- 数字. toFixed(保留几位)
var num = 123.45678
var num1 = num.toFixed(2)
console.log(num1);
案例
// 统计出现次数
// 0 10
function fn(min, max) {
// var num = Math.random()
// num *= 10
// num = Math.floor(num)
// return num
return parseInt(Math.random() * (max - min + 1)) + min
}
console.log(fn(0, 10));
var obj = {}
// 随机1000次
for (var i = 1; i <= 1000; i++) {
var num = fn(0, 10)
obj[num] = obj[num] ? obj[num] + 1 : 1
// if (obj[num] === undefined) {
// obj[num] = 1
// } else {
// obj[num] += 1
// }
}
console.log(obj);
2.Math对象/数字方法
- Math
- Math.random()
求一个随机数字(数字范围为0~1)
- Math.round()
取整--四舍五入
- Math.floor()
向下取整 = parseInt
- Math.ceil()
向上取整
- Mah.abs()
绝对值
- Math.max()
- 最大值
- 需要传递多个数字来判断最大的值,不能直接传递数组
- Math.min()
- 最小值
- 需要传递多个数字来判断最大的值,不能直接传递数组 联系:接收数组 ... [数据1,数据2,数据3……]
3.时间对象
var date = new Date()
- 不传参的时候,时间对象的内容就是当前时间
- 时间对象中,月份范围是0-11(不能只写一个数字)
(1)时间对象的获取操作
-
年:date.getFullYear()
-
月:date.getMonth()
-
日:date.getDate()
-
周:date.getDay()
-
时:date.getHours()
-
分:date.getMinutes()
-
秒:date.getSeconds()
-
获取当前时间距离1970.1.1.0:0:0 过去的总毫秒数:date.getTime()
(2)时间对象的设置操作
- 年:date.setFullYear()
- 月:date.setMonth()
- 日:date.setDate()
- 时:date.setHours()
- 分:date.setMinutes()
- 秒:date.setSeconds()
(3)定时器
1)setInterval
- 语法:setInterval(函数,数字)
- 函数:每次定时器重新执行的时候,要做的事情(要执行的代码)
- 数字:当前定时器每隔多长时间重新执行一次,单位是毫秒
2)setTimeout
-
语法:setTimeout(函数,数字)
-
函数:倒计时器执行的时候,要做的事情(要执行的代码)
-
数字:当前倒计时器延迟多长时间重新执行一次(只会执行一次),单位是毫秒
-
定时器的返回值
-
意义:表明当前定时器是这个页面的第几个定时器
-
作用:能利用返回值关闭这个定时器
-
注意:如果页面的打开方式是利用livesever,那么定时器的Id,会不太一样
3)关闭计时器
- clearInterval(要关闭的定时器的返回值)
- clearTimeout(要关闭的倒计时器的返回值)
- 注意:关闭语法可以混用,但是推荐对应的书写,可以明确看出关闭的是定时器还是倒计时器
4.JS的任务
(1)异步任务
- 特点:单线程,同一时间只能做一件事 如果只有单线程那么可能遇到一些问题
- 问题:如果遇到一个中间的代码耗时很久, 那么后续的所有代码, 都需要等待上边的代码执行完毕后再执行,给种情况给用户的感觉就是非常卡顿
- 两个定时器是异步任务
(2)同步任务
- 目前所接触到的内容中, 除了两个定时器之外的都是同步任务
- 执行顺序
- 1.代码从上往下执行
- 2.先将代码中所有的同步任务, 全都执行一遍
- 3.同步任务执行完毕后, 在执行异步任务
- 4.如果在代码的中间遇到了异步任务, 那么先将异步任务暂存到一个任务队列中, 等待所有的同步任务执行完毕后执行
3.BOM
- 核心:window对象
- 语法:window . ×××
- 我们所有的全局变量(函数以外的地方声明变量) 和 全局函数(函数以外的地方声明的函数),全都存放在 window 对象中
- 我们在开发的时候, 尽量避免全局变量或者全局函数的名字叫做name
(1)获取浏览器的窗口尺寸(宽高)
- console.log(´浏览器当前宽度´,window.innerWidth)
- console.log(´浏览器当前高度´,window.innerHeigh)
- 注意:当前方法包含浏览器的滚动条
(2)打开浏览器提供的弹出框
1)prompt---用户输入框
- 会有一个返回值,就是用户输入的内容,永远是字符串格式
2)alert---弹出框
3)confrim---用户询问框
- 会有一个返回值,点击确定返回true,否则返回false
- 弹出框会中断(暂停)程序的运行,直到关闭弹出框
(3)浏览器的地址信息
-
window.location.href
- 专门存储浏览器地址栏内url地址的信息
- 语法:var url = window.location.href
- 给属性赋值,就会跳转到其地址: window.location.href = 〝#〞
-
window.location.reload()
- 重新加载页面,相当于刷新 - 不要写在全局,否则浏览器一直刷新
(4)浏览器的历史记录
1)window.history.back( )
- 用来回退历史纪录的, 就是回到前一个页面
2)window.history.forward( )
- 是去到下一个历史记录里面, 也就是去到下一个页面
(5)浏览器的版本信息
- window.navigator
(6)浏览器的事件
1)浏览器延迟加载事件
- window.onload = function () { }
2)- 浏览器的滚动事件
- window.onscroll = function () { }
(7)浏览器的滚动距离
-
竖向
- document.body.scrollTop
- doucument.documentElement.scrollTop
-
注意:滚动事件发生的时候,浏览器的位置一直没变,变化的是浏览器的可视页面
-
如何区分:
- 1.谷歌/火狐 如果页面声明那么要使用documentElement,否则使用body
- 2.IE 如果没有声明那么使用两个都没问题,如果声明了,只能使用documentElement
- 3.safari 两个都不用,使用一个单独的方法,window.pageYoffset
-
横向
- document.body.scrollLeft
- doucument.documentElement.scrollLeft
- 注意事项和区分同竖向
(8)本地存储
-
将一些常用信息存储在用户的电脑本地(存储在浏览器中)
- localStotrage
-
增:
- window.localStorage.setItem(´key´,´value´)
- 数组无中括号;对象无键值对
- 两个参数:变量(标识)与值
- window.localStorage.setItem(JSON.stringify(数组/键值对))
-
查:
- window.localStorage.getItem(´key´)
- JSON.parse(window.localStorage.getItem(标识名))
- 返回值:查询到返回对应的数据,否则返回null
-
删:
- window.localstrage.removeItem(´key´)
- 清空:window.localstrage.clear()
- 持久化存储,存储之后不手动删除,那么永远存在
- 存储的时候,只会存储基本数据类型中的字符串