期末去死小组作业都去死,为什么不能单人视频为什么?
window.clearInterval(intervalID);
clearInterval() 方法取消了先前通过调用setInterval() 建立的定时器
注意:
window可以省略
里面的参数就是定时器的标识符


点击按钮后,该按钮60秒之内不能再次点击,防止重复发送短信

按钮点击之后,会禁用disable为true
同时按钮里面的内容会变化,注意button里面的内容通过innerHTML修改
里面秒数是有变化的,因此需要用到定时器
定义一个变量,在定时器里面不断递减
如果变量为0 说明到了时间,吸引停止定时器,并且复原按钮初始状态

this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是哪个调用它的对象
全局作用域或者普通函数this指向全局对象window(注意定时器里面的this指向window)

而当定时器this调用时,指向的是window
JS是单线程
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为Javascript这门脚本语言诞生的使命所致-JavaScript是为处理页面中用户的交互,以及操作DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行。应该先进行添加,之后再删除。
单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是:如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。
一个问题
以下代码执行的结果是什么?
- console.log(1);
-
- setTimeout(function () {
-
- console.log(3);
-
- }, 1000);
-
- console.log(2);
123
为了解决问题,利用多核cpu的计算能力。HTML5提出Web Workert 标准,允许JS脚本创建多个线程,与JS中出现了同步和异步
同步
前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的,同步的。比如做饭的同步做法:烧水煮饭,等水开了(10分钟之后)再去切菜,炒菜
异步
在做一件事情时,这件事会话费很长时间,在做这件事的同时,还可以去处理其他事情,比如做饭的异步做法,在烧水的同时,利用10分钟,去切菜,炒菜
本质的区别:这条流水线上各个流程的执行顺序不同
以下代码执行的结果又是什么?
- console.log(1);
-
- setTimeout(function () {
-
- console.log(3);
-
- }, 0);
-
- console.log(2);
123
同步任务都在主线程上执行,形成一个执行线
异步任务
JS的异步是通过回调函数实现的
一般而言,异步任务有以下三种类型:
普通事件,如click resize等
资源加载, load error
定时器 包括setInterval setTimeout 等
异步任务相关回调函数添加到任务队列中(任务队列也称为消息队列)
先执行执行线中的同步任务
异步任务(回调函数)放入任务队列中
一旦执行线中的所有同步任务执行完毕,系统就会按次序读取任务任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行线,开始执行
口述:先执行同步任务,再将回调函数放入任务队列中再执行异步任务
- console.log(1);
-
- document.onclick = function() {
-
- console.log('click');
-
- }
-
- console.log(2);
-
- setTimeout(function() {
-
- console.log(3)
-
- }, 3000);
123click

由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所有这种机制被称为事件循环(event loop)
window对象给我们提供一个location属性用于获取或设置窗体URL 并且可以用于解析URL 因为这个属性返回的是一个对象,所以蒋政属性也会称能为location对象
统一资源定位符(UniformResource LocatorURL)是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理。
URL的一般语法格式为:
prostocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link


重点记住:href search
利用定时器做倒计时效果
事件到了,就跳转页面,使用location.href

主要练习数据在不同页面中的传递
口述:一个页面填入的信息 可以呈现再另一个页面中
分析:
第一个登录页面,里面有提交表单,action提交到 index.html页面
第二个页面,可以使用第一个页面的参数,这样实现了一个数据不同页面之间的传递效果
第二个页面之所以可以使用第一个页面的数据,是利用了URL里面的location.search参数
在第二个页面中,需要把这个参数提取
第一步去掉 ? 利用substr
第二步 利用=号分割 键 和 值 split('=')

效果如下

| location对象方法 | 返回值 |
|---|---|
| location.assign() | 跟href一样,可以跳转页面(也称为重定向页面) |
| location.replace() | 替换当前页面,因为不记录历史,所以不能后退页面 |
| location.reload() | 重新加载页面,相当于刷新按钮或者 f5 如果参数为true强制刷新ctrl+f5 |
