同步和异步的区别

105 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

什么是AJAX?如何实现?

ajax是一种能够实现网页局部刷新的技术,可以使网页异步刷新。 ajax的实现主要包括四个步骤: (1)创建核心对象XMLhttpRequest;

    (2)利用open方法打开与服务器的连接;

    (3)利用send方法发送请求;("POST"请求时,还需额外设置请求头)

    (4)监听服务器响应,接收返回值。

什么是高阶函数?

高阶函数是对其他函数进行操作的函数; 高阶函数就是一个接收函数作为参数或将函数作为输出返回的函数。 例如,Array.prototype.map,Array.prototype.filter 和Array.prototype.reduce 是语言中内置的一些高阶函数。 描述浏览器的渲染过程?,DOM树和渲染树的区别?

浏览器的渲染过程: 解析 HTML 构建 DOM(DOM树),并行请求 css/image/js CSS 文件下载完成,开始构建 CSSOM(CSS树) CSSOM 构建结束后 和 DOM 一起生成 Render Tree(渲染树) 布局(Layout):计算出每个节点在屏幕中的位置 显示(Painting):通过显卡把页面画到屏幕上 DOM 树 和 渲染树 的区别: DOM 树与 HTML 标签一一对应,包括 head 和隐藏元素 渲染树不包括 head 和隐藏元素,大段文本的每一个行都是独立节点,每一个节点都有对应的 css 属性 Javascript 如何实现继承?

实例继承:将子构造函数的 prototype 指向父构造函数的一个实例 原型继承:将子构造函数的 prototype 指向父构造函数的 prototype 构造函数绑定:使用 call 或 apply 方法,将父对象的构造函数绑定在子对象上 拷贝继承:如果把父对象的所有属性和方法,拷贝进子对象 ES6 语法 extends:class ColorPoint extends Point {} Javascript 作用域链?

如果当前作用域没有找到属性或方法,会向上层作用域查找, 直至全局函数,这种形式就是作用域链 eval是做什么的? eval 的功能是把对应的字符串解析成 JS 代码并运行

应该避免使用 eval,不安全,非常耗性能(先解析成 js 语句,再执行) 由 JSON 字符串转换为 JSON 对象的时候可以用 eval('('+ str +')'); js延迟加载的方式有哪些? 动态创建 DOM 方式(用得最多)、defer 和 async标签属性

defer 和 async区别

defer 并行加载 js 文件,会按照页面上 script 标签的顺序执行 async 并行加载 js 文件,下载完成立即执行,不会按照页面上 script 标签的顺序执行 同步和异步的区别?

同步: 下面代码会等待上面 同步代码执行完毕 异步: 下面代码不会等待上面异步代码执行完毕 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新, 新内容出现,用户看到新内容,进行下一步操作 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。 等请求完,页面不刷新,新内容也会出现,用户看到新内容 documen.write 和 innerHTML 的区别

document.write 只能重绘整个页面 innerHTML 可以重绘页面的某一部分 说说你对闭包的理解 闭包有三个特性:

函数嵌套函数 函数内部可以引用外部的参数和变量 参数和变量不会被垃圾回收机制回收,会永远留驻在内存中 使用闭包主要是为了设计私有的方法和变量。 优点:是可以避免全局变量的污染,

缺点:是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

把 之前和之后有什么区别?

浏览器会如何解析它们? 按照HTML标准,在结束后出现之前没有区别 浏览器的容错机制会忽略