1.BOM(浏览器对象模型)
含义: window 是内置中的全局对象,我们所学习的所有Web APIs 的知识内容都是基于window对象实现的
setInterval() -- > 完整写法window.setInterval (默认都是浏览器内)
document是实现DOM的基础,它其实是依附于window的属性
(依附于window的属性可以省略)
2.定时器 -- 延时函数
间歇函数 : setInterval(function,1000) -- 1000ms 执行一次
延时函数 : 让代码延迟执行的函数,setTimeout
setTimeout ( 回调函数 , 等待的毫秒数 )
只执行一次,就是把一段代码延迟执行,省略window
let timer = setTimeout(回调函数,等待ms)
clearTimeout(timer) // 也可以选择停止执行
<button>解除炸弹</button>
<script>
let timer = setTimeout(function () {
document.querySelector('body').style.backgroundColor = 'pink'
},3000) // 三秒之后执行
// 可以停止
let btn = document.querySelector('button')
btn.addEventListener('click',function() {
console.log('解除成功');
clearTimeout(timer)
})
</script>
5s后自动关闭广告
<body>
<div>
5s后自动关闭广告
</div>
<script>
// 设置广告5s之后自动消失
let div = document.querySelector('div')
// 设置一个倒计时
let t = 5
let timer = setInterval(function () {
--t
div.innerHTML = `
${t}s后自动关闭广告
`
},1000)
setTimeout(function () {
div.style.display = 'none'
clearInterval(timer)
},6000)
</script>
</body>
2.1、递归函数
<script>
// 递归函数 -- 容易造成死递归 , 一定要记得加退出条件
let num = 0;
function fn() {
num ++;
console.log(num);
if(num >= 100){
return
}
// 函数里面一直调
fn()
}
fn()
</script>
2.2、利用递归实现setInterval
<body>
<div class="d1"></div>
<div class="d2"></div>
<script>
let d1 = document.querySelector('.d1')
// 两种定时器 进行时间的输出
function time() {
d1.innerHTML = new Date().toLocaleString()
setTimeout(time,1000)
}
time()
let d2 = document.querySelector('.d2')
// 直接用定时器来写
setInterval(function () {
d2.innerHTML = new Date().toLocaleString()
},1000)
</script>
</body>
结果显示
setInterval的特征是重复执行,首次执行会延时
setTimeout是延时执行,只执行一次
setTimeout结合递归可以模拟serInterval进行执行

3.JS执行机制
js是单线程 , 同一时间只能做一件事。
解决L
为了解决这个问题,利用多核CPU的计算能力,HTML5提出标准。js 出现了 同步和 异步

594

被折叠的 条评论
为什么被折叠?



