js中有趣的闭包(closure)】的更多相关文章

一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1(); 另一方面,在函数外部自然无法读取函数内的局部变量. function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,一定要使用va…
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量."  [示例一] var name = 'wangxi' function user () { // var name = 'wangxi' function getName () { console.log(name) } getName() } user() // wangxi 在 getNa…
作用域链实例   (1) function example() { var age = 23; alert(age) } var age = 25; example(); alert(age); // 将输出23和25两次   说明: 当执行example时, 首先通过var关键字定义了一个私有变量age, 此时, example成为私有变量age作用域作用域链的终点. 在进行赋值时, 会先从作用域链的终点开始查找变量age, 由于在终点就可以找到, 所以不会继续向上查找, 故而赋值为23后,…
如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎么写,是不是这样? 可是结果呢,弹出来的都是10,为啥? var i,a for(i=0;i<10;i++){ a=document.createElement('a') a.innerHTML=i+'<br>' a.addEventListener('click',function(eve…
闭包是是纯函式语言的一个特性,也是JS的一个关键性的特色,虽然不了解也能开发程序,但我们不是这种人对吧? 闭包不仅可以减少某些高阶功能的代码数量和复杂度,并且可以让我们做到原本无法做的复杂功能.听到这还不想认识他吗! 那什么是闭包呢?它是一种数据结构,可以说是一种技术,能记住函式及函式被建立时当下环境,也就是说函式可以存取在建立时作用范围内的变数(jmcintoshcc). 我们先来看一个最简单的示例: var outer =“global”: function outerFun(){ cons…
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量."  [示例一] var name = 'wangxi' function user () { // var name = 'wangxi' function getName () { console.log(name) } getName() } user() // wangxi 在 getNa…
1.分号与换行 function fn1(){ return { name: 'javascript' }; } function fn2(){ return { name: 'javascript' }; } var obj1 = fn1(); var obj2 = fn2(); console.log(obj1); console.log(obj2); 这个例子看上去没有什么不同,但是实质上,确实是不同的.第一个输出结果为一个object ,而第二个输出结果为undefined.为什么? 因…
闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.…
代码片段一: var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()()); 代码片段二: var name = "The Window"; var object = { name : &q…
前言 在以前的web开发中,我们多数选择纯文本或XML作为我们的提交的数据格式,大多数是XML,少数纯文本.其实从AJAX(Asynchronous JavaScript and XML)的命名我们也知道,数据交换是大多数通过XML格式进行的.但是XML格式有一个缺点,就是文档构造复杂,需要传输比较多的字节数,并且解析起来也比较麻烦.所以就创建了JSON这种数据描述格式,可以很简单的就描述很复杂的数据.同时独立于语言,这样就可以在多种语言内使用.也正是因为这个,JSON的轻便性逐渐得到重视,后来…