一段代码说明javascript闭包运行机制

如果你能理解下面代码的运行结果,应该就算理解闭包的运行机制了。

 var name = "tom";
    var myobj = {
        name: "jackson",
        getName: function () {
            return function () {
                return this.name;
            }
        }
    };
   alert(myobj.getName()());//tom

使用闭包的注意点

1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

一段代码说明javascript闭包运行机制

时间: 2024-10-08 01:06:44

一段代码说明javascript闭包运行机制的相关文章

JavaScript 的运行机制

前言 参看文章: 这一次,彻底弄懂 JavaScript 执行机制 JavaScript 运行机制详解:再谈Event Loop 作为一个前端er,最基本的要求也得知道js的运行机制叭.由于js是单线程的,所以js是按顺序执行的. console.log('1') console.log('2') 输出:1,2.果然是按顺序执行的.本文结束. 来点复杂的. setTimeout(function () { console.log('1') }) new Promise((resolve) =>

javaScript的运行机制?

看到这个题目的时候你会迷茫,不知道如何回答,感觉你好像不了解javaScript一样,不了解哪些你指尖轻巧的代码? 第一步:执行代码块:也就是执行<script></script>   代码块之间是独立的 第二步:执行函数 拓展:定义函数的方式有哪些: 声明函数:Function a(){}; 表达式函数:var bb =function(){} 两者的区别:调取先后顺序的区别 <script> //方式1 声明函数先调取后声明 aa(); function aa ()

JavaScript的运行机制

1.JavaScript的单线程机制 2.任务队列(同步任务和异步任务) 3.事件和回调函数 4.定时器 5.Event Loop事件循环 一.JavaScript的单线程机制,JavaScript的使用单线程是由其主要用途有关,JavaScript是在用户互动.操作DOM元素,如果使用多线程则会带来很多问题,同时操作一个DOM进行删除和添加操作,浏览器无法选择执行那个线程? 二.任务队列,单线程机制,JavaScript的任务就是依次执行,但是CPU与IO设备(ajax网络读取数据,鼠标,键盘

深入浅出JavaScript运行机制

一.引子 本文介绍JavaScript运行机制,这一部分比较抽象,我们先从一道面试题入手: console.log(1); setTimeout(function(){ console.log(3); },0); console.log(2); 请问数字打印顺序是什么? 这一题看似很简单,但如果你不了解JavaScript运行机制,很容易就答错了.题目的答案是依次输出1 2 3,如果你有疑惑,下文有详细解释. 二.理解JS的单线程的概念 JavaScript语言的一大特点就是单线程,也就是说,同

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

PS: 我先旁观下大师们的讨论,得多看书了~ 别人说的:“看了一下不觉得评注对到哪里去,只有吹毛求疵之感. 比如同步异步介绍,本来就无大错:比如node图里面的OS operation,推敲一下就可以猜到那是指同步操作(自然不走event loop了):至于watcher啥的,显然只是实现上的特色,即使用同一个queue实现也未尝不可” [原帖: http://www.ruanyifeng.com/blog/2014/10/event-loop.html 作者:阮一峰] 一年前,我写了一篇<什么

【JS】JavaScript引擎的内部运行机制

首先看一段小程序: <script> alert('第1'); setTimeout(function(){<pre name="code" class="javascript"><span style="white-space:pre"> </span>alert('第2'); }, 2000); alert('第3');</script> 输出顺序是:第1,第3,第2:再来看一段小程

【repost】JavaScript 运行机制详解:再谈Event Loop

一年前,我写了一篇<什么是 Event Loop?>,谈了我对Event Loop的理解. 上个月,我偶然看到了Philip Roberts的演讲<Help, I'm stuck in an event-loop>.这才尴尬地发现,自己的理解是错的.我决定重写这个题目,详细.完整.正确地描述JavaScript引擎的内部运行机制.下面就是我的重写. 进入正文之前,插播一条消息.我的新书<ECMAScript 6入门>出版了(版权页,内页1,内页2),铜版纸全彩印刷,非常

JavaScript 运行机制详解:再谈Event Loop

原文地址:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一年前,我写了一篇<什么是 Event Loop?>,谈了我对Event Loop的理解. 上个月,我偶然看到了Philip Roberts的演讲<Help, I'm stuck in an event-loop>.这才尴尬地发现,自己的理解是错的.我决定重写这个题目,详细.完整.正确地描述JavaScript引擎的内部运行机制.下面就是我的重写. 进入正文之前,

JavaScript 运行机制详解

JavaScript 运行机制详解——转载: 一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. JavaScript的单线程,与它的用途有关.作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM.这决定了它只能是单线程,否则会带来很复杂的同步问题.比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另