Fork me on GitHub
随笔 - 265  文章 - 0  评论 - 1075  阅读 - 230万
11 2012 档案
[译]JavaScript:函数的作用域链
摘要:[译]JavaScript:函数的作用域链原文:http://blogs.msdn.com/b/jscript/archive/2007/07/26/scope-chain-of-jscript-functions.aspx在JavaScript中,函数的作用域链是一个很难理解的东西.这是因为,JavaScript中函数的作用域链和其他语言比如C, C++中函数的作用域链相差甚远.本文详细解释了JavaScript中与函数的作用域链相关的知识,理解这些知识可以帮助你在处理闭包的时候避免一些可能出现的问题.在JavaScript中,函数可以让你在一次调用中执行一系列的操作.有多种方式来定义一个函 阅读全文
posted @ 2012-11-26 10:03 【艾伦】 阅读(493) 评论(2) 推荐(3) 编辑
再探Javascript词法作用域
摘要:vartt='aa';functiontest(){alert(tt);vartt='dd';alert(tt);}test();“太简单了!”这是我当时看到这个题目是的第一想法,于是轻率答题竟成我的致命之伤。我的答案是——aa和dd,解析:第一次输出全局变量的结果,然后局部变量tt覆盖全局变量所引用的值,所以第二次输出结果是dd。任何人见我如此作答,都会认为我是在扫盲——想法及其幼稚(我也这么认为)!网易啊,怎么可能会满意于这种答案!正确的答案应该是:undefined和dd为什么第一次alert的结果是undefined呢?要解释得清楚明白需要用到Javas 阅读全文
posted @ 2012-11-24 13:13 【艾伦】 阅读(307) 评论(0) 推荐(2) 编辑
JavaScript词法作用域与调用对象
摘要:作用域 ScopeJavascript 中的函数属于词法作用域,也就是说函数在它被定义时的作用域中运行而不是在被执行时的作用域内运行。这是犀牛书上的说法。但"定义时"和"执行(被调用)时"这两个东西有些人搞不清楚。简单来说,一个函数A在"定义时"就是 function A(){} 这个语句执行的时候就是定义这个函数的时候,而A被调用的时候是 A() 这个语句执行的时候。这两个概念一定要分清楚。那词法作用域(以下称之为"作用域",除非特别指明)到底是什么呢?它是个抽象的概念,说白了它就是一个"范围" 阅读全文
posted @ 2012-11-24 10:51 【艾伦】 阅读(964) 评论(0) 推荐(3) 编辑
JavaScript中的异步梳理(3)——使用Wind.js
摘要:在之前介绍的方法中,无论是消息驱动还是Promise,都无法摆脱“回调”这个东西。习惯了命令式编程的我们似乎很难接受回调,因为它的执行顺序和代码编写顺序并不一致。而JavaScript中的回调之所以会有这么多话题值得讨论,我想一方面是因为它有一张长得像Java的脸,而同时却又有如此多的异步特性。反观像Erlang, F#那样生来就是异步的语言,似乎反而没这么多话题好讨论的。异步就要回调吗?这是个问题,习惯了JavaScript中的异步似乎这个问题的答案是肯定的,但Wind.js却扭转了这一点。在同步、阻塞的环境下,我们写下如下代码123str = readFile('...') 阅读全文
posted @ 2012-11-17 10:02 【艾伦】 阅读(3199) 评论(0) 推荐(4) 编辑
JavaScript中的异步梳理(1)——使用消息驱动
摘要:先举一个例子,如果希望ABCDE这5个函数依次执行,我们可以写出如下代码。A();B();C();D();E();在同步的情况下,这样的代码没有任何问题。但如果ABCDE都是异步的,还需要按次序执行,这样写就不行了。通常我们会为异步函数设置回调,当函数执行完的时候执行回调,例如A(function(){ B(function(){ C(function(){ D(function(){ E(); }); }); });});毫无疑问这样的编程体验是很差的。当异步流复杂的时候回调嵌套... 阅读全文
posted @ 2012-11-17 10:01 【艾伦】 阅读(988) 评论(0) 推荐(3) 编辑
JavaScript中的异步梳理(2)——使用Promises/A
摘要:Promises是一种异步编程模型,通过一组API来规范化异步操作,这样也能够让异步操作的流程控制更加容易。这里谈的是Promises/A,算是Promises的一个分支吧,其实就是根据Promises模型定义了一组API。由于Promises对于新手而言理解曲线还是比较陡峭的,这里循序渐进的给大家介绍,同时实现一个最简单的Promises/A代码。Promises/A有个别名叫做“thenable”,就是“可以then”的。这里一个promise有三种状态:[默认、完成、失败],初始创建的时候是默认状态,状态只可以从默认变成完成,或者默认变成失败。一旦完成或者失败,状态就不能再变。为了简化文 阅读全文
posted @ 2012-11-17 10:01 【艾伦】 阅读(2231) 评论(0) 推荐(3) 编辑
JavaScript中的异步梳理(0)
摘要:JavaScript中有大量异步操作,首先可以看看JS中什么东西会产生异步(这里先只考虑浏览器里的情况):Ajax(XMLHttpRequest)Image Tag,Script Tag,iframe(原理类似)setTimeout/setIntervalCSS3 Transition/AnimationpostMessageWeb WorkersWeb Socketsand more…实际上在我自己的理解中,任何“在未来不确定的时间发生”的事情都可以理解为异步,因此各种DOM事件也可以用类似的方式去理解和处理。异步是JS中的重要话题,Ajax和Node.JS出现以后更是让JS中的异步编程提升 阅读全文
posted @ 2012-11-17 09:55 【艾伦】 阅读(1257) 评论(0) 推荐(5) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示