javascript定义

  在程序语言中,所谓,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留它们在最初定义(或创建)时的值 (深连结)。script//A是一个普通的函数 function A(a) { return a; } //B是一个带函数返回值的函数 function B(b) { return function (c) { return b+c; } } var x = A(10); var y = B(20);
http://www.w3dev.cn/article/20130117/javascript-closure-defined.aspx

JavaScript核心,和作用域面试题

  DmitryBaranovskiy的博客中有篇文章(http://dmitry.baranovskiy.com/post /91403200),其中有五段小代码,用来测试是否理解JavaScript的核心,和作用域。大家先试着给出alert语句的输出结 果。之后再建一个测试文件,检测你的答案。一scriptif (!(a in window)) { var a = 1;}alert (a);/script二scriptvar a = 1, b = function a (x) { x a (--x); };alert (a);/script三scrip
http://www.w3dev.cn/article/20121201/JavaScript-Core-Closures-scope-Interview-questions.aspx

Javascript的特性简析

vascript的定义非常晦涩,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留它们在最初定义(或创建)时的值(深连结)。简单来 说,Javascript就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),而这些键值对是不会随上一级函数的执行完成而 销毁。周爱民说得更清楚,就是属性表,就是一个数据块,就是一个存放着Name=Value的对照表。就这么简单。但是,必须强调, 闭包是运行期概念,一个函数实例。Javascript的实现,通常是在
http://www.w3dev.cn/article/20120830/Javascript-closure-feature-introduction.aspx

JavaScript(closure) 详解

次调用相同的构造函数,但只会生成新对象和方法,新的临时变量只是对应新 的值,和上次那次调用的是各自独立的。  为了更深刻的理解,下面让我们继续探索的作用和效果。二、闭包有什么作用和效果?  简而言之,的作用就是在a执行完并返回后,使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。这是对作用的非常直白的描述,不专业也不严谨,但你一定能看懂。理解需要循序渐进的过程。 在上面的例子中,由于的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。 那么我们来想象另一种情况,如
http://www.w3dev.cn/article/20120830/what-is-Javascript-closure.aspx

JavaScript的和作用域链

e在全局环境中声明了,但输出的结果是:代码5输出: Iamstephenchan  先不对上面的代码进行说明,讲述一下和作用域链的概念。  (closure)是什么?与函数有着紧密的关系。在JavaScript中,一个函数只是一段静态的代码、脚本文件,因此函数是一个代码书写时,以及编译期的、静态的概念;而闭包则是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念。 这是《JavaScript语言精髓和编程实践》中对函数和的描述,实际上我们常说的倒是可以表现为如上面代码2中的innerFunc一样,在 myFunc的函数执行后返回的是一个在其内部定义的、外部可调
http://www.w3dev.cn/article/20120830/Javascript-closure-and-scope-chain.aspx

在Javascript中,什么是

在Javascript中,什么是(Closure)的两个特点:1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。2、一个就是当一个函数返回时,一个没有释放资源的栈区。例1。 +展开-HTMLscripttype="text/javascript"functionsayHello2(name){vartext='Hello'+name;//localvariablevarsayAlert=function(){alert(text);}returnsayAlert;}varsy=sayHello2('never-online');sy();/script作为一个Jav
http://www.w3dev.cn/article/20090604/67.aspx

for循环遍历如何延时执行

ut并不会挂起其他代码运行,for循环中几乎瞬时完成遍历,同时启动了5个计时器,然后3s后基本是同时执行了回调函数。2)出现undefined设计到闭包,for循环后i已经变为arr.length,5,执行setTimeout回调时i为5,所以arr[5]为undefined,相关看这个:JavaScript   要想延时输出数组项,应该递归调用setTimeout,而不是for语句体中同时启动计时器。  延时遍历数组代码如下div id=dv/divscript var arr = [1, 2, 3, 4, 5]; function delayEachArray(del
http://www.w3dev.cn/article/20160624/for-delay-execute.aspx

javascript特殊用法解密

r someVar;alert(someVar == undefined); //显示 true/script  目前为止,一切看上去风平浪静,正常无比,但剧情总是很狗血:scriptundefined =I'm not undefined!;var someVar;alert(someVar == undefined); //显示 false!/script  这就是为什么jQuery源码中最外部的函数要有个并没有传入的undefined参数,目的就是保护undefined不要被外部的些不良乘虚而入。来源:http://www.jb51.net/article/28125.htm
http://www.w3dev.cn/article/20160331/JavaScript-special-usage.aspx

如何解决IE内存泄漏

a closure).函数(Closures)  由于函数会使程序员在不知不觉中创建出循环引用,所 以它对资源泄漏常常有着不可推卸的责任。而在函数自己被释放前,我们很难判断父函数的参数以及它的局部变量是否能被释放。实际上函数的使用已经很 普通,以致人们频繁的遇到这类问题时我们却束手无策。在详细了解了背后的问题和一些特殊的泄漏示例后,我们将结合循环引用的图示找到的所在, 并找出这些不受欢迎的引用来至何处。 Figure 2. 函数引起的循环引用  普通的循环引用,是两个不可探知的对象相互引用造成的,但是闭包却不同。代替直接造成引用,函数则取而代之从其父函数
http://www.w3dev.cn/article/20130130/IE-Memory-leak-solution.aspx

node.js基本介绍

用,它却依然能访问 clickCount变量。  前面展现了的神奇之处,把状态变量传递给一个函数就可以让你不用维护状态就能进行事件驱动编程,JavaScript的机制会帮你维护它们。小结  事件驱动编程是一种通过事件触发来决定程序执行流程的编程模型。程序员为他们感兴趣的事件注册回调函数(通常被称作事件处理器),然后系统在事件发 生时调用已注册的事件处理器。这种编程模型有很多传统阻塞编程模型所不具备的优势,以前要实现类似的特性,就必须使用多进程/多线程才行。  JavaScript是种强大的语言,因为它的第一类型对象的函数和特性,让它很适合事件驱动编程,作者:Yao首发自:http:
http://www.w3dev.cn/article/20130119/node.js-basic-summary.aspx

javascript代码优化技巧

.prop3_ = [];};foo.Bar.prototype.prop1_ = 4;foo.Bar.prototype.prop2_ = true;foo.Bar.prototype.prop4_ = 'blah';5、避免中的陷阱 闭包是一个强大有用的东西。但是他们有一些缺点,包括:1、他们是内存泄露的最主要元凶2、创建一个比创建一个内联函数慢,比重用一个静态函数更慢。 比如:function setupAlertTimeout() { var msg = 'Message to alert'; window.setTimeout(functi
http://www.w3dev.cn/article/20130101/javascript-code-Optimization.aspx

event对象在IE和firefox详解

ck(event) { clk();}  回到clk中的alert(event),既然匿名函数的event传入了,那么在该闭包中clk是可以获取到event的,事实上点击后 Firefox会报错:event is not defined。猜测该匿名函数的和function clk(){alert(event);}不是同一个环境。这种方式不行,则只能通过显示的参数传入了,如script type=text/javascript function clk(e){alert(e);}/scriptdiv onclick=clk(arguments[0])Div2 Element
http://www.w3dev.cn/article/20121121/event-in-ie-firefox-introduction.aspx

javascript运行机制浅析

寻找,一直 lookup到全局调用对象(global object)。 当一个函数实例执行时,会创建或关联到一个(closure)。 scriptObject用来静态保存与函数相关的变量表,closure则在执行期动态保存这些变量表及其运行值。closure的生命周期有可能比函 数实例长。函数实例在活动引用为空后会自动销毁,closure则要等要数据引用为空后,由JS引擎回收(有些情况下不会自动回收,就导致了内存泄漏)。 别被上面的一堆名词吓住,一旦理解了执行环境、调用对象、、词法作用域、作用域链这些概念,JS语言的很多现象都能迎刃而解。小结  至此,对于文章开头部分的疑问,可以解释得
http://www.w3dev.cn/article/20120830/javascript-runtime-parse.aspx

WCF可靠会话-原理篇(上)

Open(); 5: proxy.Add(1, 2); 6: proxy.Add(1, 2); 7: (proxy as ICommunicationObject).Close(); 8: }  当第一次调用Add方法的时候,服务端会接收到如上面XML所示的含有Sequence报头的请求消息。当服务端RS接收到该请求时,并不会立即 对其进行确认,而是利用回复消息进行确认。具体地说,当请求消息被分发给服务模型层并成功执行后,执行后的结果被封装成回复消息。当回复消息被传入信道层 后会被RS信道接收,此时它会将SequenceAcknowledgement
http://www.w3dev.cn/article/20120512/wcf-Reliable-Sessions-theory-I.aspx

ajax onreadystatechange状态转换函数研究

#39;):false);if(!xhr)thrownewError('浏览器不支持Ajax');returnxhr;}Ajax.prototype.statechr=function(){//注意callServer中状态转换函数的添加方法,这种添加方法在IE6,FF2中不太符合和继承的精神,需要使用实例名称来访问,callServer中状态转换函数不推荐这样来绑定//为了兼容IE6和FF2,不能使用this对象来访问xhr对象,而且还需要调用回调函数,this指向并非ajax的实例对象,this对象指向参考第一个示例代码的说明if(xhr.ajax.readyState
http://www.w3dev.cn/article/20100709/ajax-object-onreadystatechange-this-scope.aspx

模仿163/qq图片浏览效果js文件说明

览器提示信息'],next:'下一张提示信息',pre:'上一张提示信息'}*/varShowboImgLib=function(parentId,imgParentId,cfgDisplay,cfgArrowCopy,cfgUpdate,cfgImg,cfgLans){varme=this;//对象//输出样式document.write('styletype="text/css"\n'+'#'+parentId+'{height:120px;overflow:hidden;}\n'+'#'+parentId+'div{float:left;}\n'+'#'+parentId+'div.
http://www.w3dev.cn/article/20100617/2639.aspx

26.2.使用本地化资源

26.2.1. 问题我想在应用程序中支持少量的可选语言。.26.2.2. 解决办法使用编译的资源提供本地资源。26.2.3. 讨论对于基础的Flex应用程序本地化需求,你可以使用资源。资源是一些ActionScript对象,提供一个接口通过数据绑定和ActionScript代码访问由属性文件中定义的本地化内容。应用程序的每个捆绑表示一个单独的本地化属性文件。属性文件是一个文本文件,包含本地化属性键和关联值的列表。键值对以key=value的格式,属性文件以.properties扩展名保存。本地化值是文本字符串,嵌入的资源可以是图像,ActionScript 类引用。当本地化应用程序时
http://www.w3dev.cn/article/20100430/2291.aspx

24.7.处理测试用例事件

来是可以的,这样只有一个addAsync调用监听器,新的addAsync将在随后的代码中被创建。其次,在测试期间不能多次调用addAsync。因为addAsync机制是作为汇合点让FlexUnit知道何时测试会完成或失败,多次调用addAsync会导致误报或不正常现象。用addAsync来代替使用或创建实例变量,这样通过addAsync的可选的第三个参数传递给监听器。传递的参数可以是任意的,可灵活使用。例如,上面代码的定义的测试可以在创建确认完成标志Configuration对象之前先初始化XML载入。这样的做法是遵循单元测试的快速故障检测模式,帮助你尽可能的节省整个测试集合的测试时间。下
http://www.w3dev.cn/article/20100428/2265.aspx

JavaScript精粹读书笔记(4)

中的一组语句。这些语句是函数的主体。它们在函数被调用时执行。函数定义可以出现在任何允许表达式出现的地方。函数也可以被定义在其他函数中。一个内部函数自然可以访问自己的参数和变量,同时它也能方便地访问它被嵌套在其中的那个函数的参数与变量。通过函数定义创建的函数对象包含一个连到外部上下文的连接。这被称为。它是JavaScript强大表现力的根基。4.3 调用调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数接收两个附加的参数:this和arguments。参数this在面向对象编程中非常重要,它的值取决于调用的模式。在JavaScript中一共有四
http://www.w3dev.cn/article/20100204/1379.aspx

JavaScript精粹(4-2)

ML字符实体并替换为它们对应的字符。在一个对象中保存字符实体的名字和它们对应的字符是有意义的。但我们该在哪里保存该对象呢?我们可以把它放到一个全局变量中,但全局变量是魔鬼。我们可以把它定义在该函数中,但是那有运行时的损耗,因为该函数在每次被执行的时候该定义都会被初始化一次。理想的方式是将其放入一个,+展开-JavaScriptString.method('deentityify',function(){//字符映射表,它映射字符的名字到对应的字符varentity={quot:'"',lt:'',gt:'>'};//返回deentityify方法returnfunction(){//这才是
http://www.w3dev.cn/article/20100204/1380.aspx

发送自定义IP(测试中:第二版)

teToUint16(buffer);myip_hdr.checksum=checksum(myarray2,myarray2.Length);ipbytes=StructToBytes(myip_hdr);ipbytes.CopyTo(buffer,0);//buffer即为要发送的伪IP//发送ipIPEndPointremoEnd=newIPEndPoint(IPAddress.Parse(t_remoIP.Text),Convert.ToInt16(t_remoPort.Text));try{s.SendTo(buffer,remoEnd);MessageBox.Show("发送成
http://www.w3dev.cn/article/20090814/785.aspx

Javascript attachEvent传递参数的办法

找了半天找到的解决办法,看介绍说是javascript的问题,导致得不能直接读取外部的那个函数,不然就所有传递的参数都变为最后一个了。+展开-JavaScriptvarnewopen=function(id,level){returnfunction(){opentree(id,level);//该函数为外部定义的一个执行函数;}}x.attachEvent("onclick",newopen(id,parseInt(level)+1));y.attachEvent("onclick",newopen(id,parseInt(level)+2));
http://www.w3dev.cn/article/20090707/424.aspx

js再论call和apply

, 这里的$A(arguments)一定是一个空数组 }}代码解析:该bind用途在于将某个函数绑定到特定的函数去执行,a) var __method = this;这首先把Function Context重新赋值到一个本地变量,使得在Closure(这是一个javascript的特性,可解释为"")中都能访问到,如此在下边就可以方便获取了。它实质就是bind方法的调用者, 是一个函数对象。b) var args = $A(arguments);这里因为arguments本就是一个类数组的对象,通过$A(arguments)将传入到bind方法的参数都转化为array.c) var obj
http://www.w3dev.cn/article/20090629/264.aspx

Firefox下的AJAX onreadystatechange问题

vascript的(这个解决方法是从GMAP中获得灵感的)。我们传递一个函数给onreadystatechange,在这个函数中处理从服务器上返回的数据,但是onreadystatechange是一个无参函数,那该怎么办呢?方法在我前面的Javascript attachEvent传递参数的办法已经介绍 了,这里再稍微介绍一下,就是传递一个参数给onreadystatechange,但是在onreadystatechange中使用return一个无参函数,在这个无参函数中可以使用这个传入的参数。这个方法在IE和FF中都可以正常运行,所以这不失是一个好方法。这里提到采用,挺复杂,另外网上
http://www.w3dev.cn/article/20090629/267.aspx

Javascript类中的私有变量和静态方法

}; }service 就是一个特权方法。前三次调用会返回’abc’。之后 ,它会返回 null。service调用的私有的 dec 方法,而 dec又访问了私有的 secret变量。service对其它的对象和方法是可见的,但不能直接访问私有成员。 这种公共、私有和特权成员的模式是可行的原因是由于JavaScript有 closure。这个意味着一个内部的函数总是可以访问这个函数外部的变量和参数,甚至在外部的函数返回之后。这是这个语言的一个极其强大的特性。目前没有哪本关于JavaScript编程的书展示了如何发掘这个特性。大多数都没有提到。 私有和特权成员只能在对象构造的时候生成。
http://www.w3dev.cn/article/20090604/68.aspx