前言
异步是javascript一个标志,尤其在nodejs中,操作数据库等往往带来大量的异步调用,所谓的“callback hell”由此而来,async作为成名较早的异步流程库,API设计属于异步1.0时代,其思想非常接近主流思考方向,源码必然很有参考价值,于是找时间看了一下其源码中的几个主要方法。
异步是javascript一个标志,尤其在nodejs中,操作数据库等往往带来大量的异步调用,所谓的“callback hell”由此而来,async作为成名较早的异步流程库,API设计属于异步1.0时代,其思想非常接近主流思考方向,源码必然很有参考价值,于是找时间看了一下其源码中的几个主要方法。
IE9+ & WEBKIT: window.pageYOffset == window.scrollY;
兼容写法 :
var supportPageOffset = window.pageXOffset !== undefined; var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft; var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;`document.compatMode`表示是否是标准文档模式。 + 窗口大小 IE9+ & webkit: `window.innerHeight`表示浏览器网页部分可视区域高度。`window.outerHeight`表示浏览器高度。 兼容写法:
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
window.outerHeight 一般来说等于 window.screen.availHeight
包含了浏览器工具条的高度,而window.screen.height
是指屏幕的高度。
一篇详细的测试文章: offsetHeight, clientHeight与scrollHeight的区别
在做 多host工具 项目时,我需要一个透明代理,让浏览器的所有的请求通过一个nodejs server转发,从而可以实现修改请求的目的。问题就是,如何构建一个能够同时支持http && https的web proxy。
##ECMAScript3 代码执行流程
###ES3中可以执行的代码分为下面三种:
ECAMScript代码进入上述的每一种代码环境开始执行之前,会创建一个叫做 执行上下文(Execution Context) 的东西,它存在于这个代码环境执行的整个过程,在退出代码环境的时候,也退出了对应的上下文。
简单的来说,一段javascript代码,从上到下,每次进入到上述3种之一的代码,就会创建一个上下文,可执行代码执行完了之后这个上下文也会被销毁,整个程序自然而然可以想象的到,内部维护了一个栈,这个栈的顶端就代表着当前的执行环境,每进入一个新的代码执行环境,就创建并推入上下文栈一个新的上下文,退出的时候从上下文栈中推出。
可执行上下文 我们简称 EC。