Results 5 comments of mdqsky

我在上课的时候联想到的一个例子,包括直接、间接、异步,和你的问题有关,不是特别准确(文末有总结),供参考: 受老师的“老板和秘书打电话、发微信”例子启发,想到一组送快递的例子。 ### 例子1: 快递小哥打电话给我:“你好,XX快递,在AA大厦楼下,麻烦来取一下。” 我:“好的,请等一会。” 挂了电话,我喝一口水,换鞋、拿钥匙,顺便照了下镜子,关门下楼。 我来到楼下,等待中的小哥递给我快件,事情结束。 ### 例子2: 快递小哥打电话给我:“你好,XX快递,在AA大厦楼下,麻烦来取一下。” 我:“楼下大厅有个丰巢快递柜,请放在里面。” 过了一会,我下楼来到快递柜,看着小哥放快件进去,待他转身,我打开柜箱,取出快件。 小哥:…… ### 例子3: 快递小哥打电话给我:“你好,XX快递,在AA大厦楼下,麻烦来取一下。” 我:“抱歉,我这会正在听JS直播课,走不开。楼下大厅有个丰巢快递柜,请放在里面。” 小哥:“好的,我发完其他人的再放,一会记得来取。” 小哥和我各自做事,互不耽搁。 等到半小时后,我下楼取了快递,心中暗想:“有了快递柜,我就不用停下手里的活赶下去,真方便。” ### 结语 显然,第一个例子是直接调用,第二个是间接调用,第三个是异步处理,其中快递柜就是传递的通道。我理解老师举间接调用例子的目的是为了从直接调用到异步处理的过渡。在上述的例子2中,我不直接去小哥那取快件,而是在快递柜等他放进去再取很奇怪。这也就突出了例子3比例子1多一个间接通道的好处。 例子1中,我特意描述了从挂电话到取件的过程,是为了营造出“我(这个函数)在这期间有一些处理过程(函数体)”的氛围。不过总体还是觉得和上课所说映射不准确,大家先领会精神,再提出改进建议吧。

### 问题3: 如果将29行的"var success = prepare();"放到函数外(例如前面的26行),那success是不是就变成全局变量了?整个代码执行起来也是一样的,只不过这个success也可以被其他函数用了?这就是老师今晚提到的作用域么?

### 新的发现 今天用昨晚老师教的console.log(n);理解程序运行顺序,感觉头脑里的逻辑更清晰了,十分感谢!又测试了问题3的变体,发现把29行放出来后,prepare()会先于startWork()执行,似乎会改变程序设计时的本意。相比只是一个数组、字符串之类的局部变量变成全局变量,影响更大,要考虑的点也更多。

并不是完全清楚,还是希望能点评一下 发自网易邮箱大师 在2017年09月02日 17:53,xugaoyang 写道: 是不是问题都解决了? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.