[toc]
JS是单线程->JS就是个傻,脑子一根经,做着当前这件事,没有完成之前,绝对不会做下一件事情
JS中的两种编程思想:同步、异步
## 同步
同步->上一件事情没有完成,继续处理上一件事情,只有上一件事情完成了,才会做下一件事情(JS中大部分都是同步编程的)
```
for(var i=0;i<10000;++i){
if(i==99999){
console.log("循环结束了~~");
}
}
console.log("ok");
```
for循环就是同步编程的,只有循环结束后,才会继续执行下面的代码
### 关于死循环
```
while(1){}
console.log("ok"); //->永远都不会输出的,因为上面的循环是死循环,循环永远都不会结束
```
## 异步
规划要做一件事情,但是不是当前立马去执行这件事情,需要等一定的时间,这样的话,我们不会等着它执行,而是继续执行下面的操作,“只有当下面的事情都处理完成了,才会返回头处理之前的事情;如果下面的事情并没有处理完成,**不管之前的事情有没有到时间**,都踏踏实实的给我等着”
在JS中异步编程只有四种情况:
- 定时器都是异步编程的
- 所有的事件绑定都是异步编程的
- Ajax读取数据的时候,我们一般都设置为异步编程
- 回调函数也是异步编程的。
```
var n = 0;
window.setTimeout(function(){
n++;
console.log(n); //->1 (2)
},0);
console.log(n); //->0 (1)
```
每一个浏览器对于定时器的等待时间都有一个最小的值,谷歌:5~6ms,IE:10~13ms,如果设置的等待时间小于这个值,不起作用,还是需要等待到最小时间才执行的,即使设置的时间为0。
```
```
- 空白目录
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13个核心属性
- DOM优化
- 回流与重绘
- 未整理
- 文档碎片
- DOM映射机制
- DOM库封装
- 事件
- 功能组件
- table
- 图片延迟加载
- 跑马灯
- 回到顶部
- 选项卡
- 鼠标跟随
- 放大镜
- 搜索
- 多级菜单
- 拖拽
- 瀑布流
- 数据类型的核心操作原理
- 变量提升
- 闭包(scope)
- this
- 练习题
- 各种数据类型下的常用方法
- JSON
- 数组
- object
- oop
- 单例模式
- 高级单例模式
- JS中常用的内置类
- 基于面向对象创建数据值
- 原型和原型链
- 可枚举和不可枚举
- Object.create
- 继承的六种方式
- ES6下一代js标准
- babel
- 箭头函数
- 对象
- es6勉强笔记
- 流程控制
- switch
- Ajax
- eval和()括号表达式
- 异常信息捕获
- 逻辑与和或以及前后自增
- JS中的异步编程思想
- 上云
- 优化技巧
- 跨域与JSONP
- 其它跨域相关问题
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重写和方法重载
- 移动端
- 响应式布局开发基础
- 项目一:创意简历