`

JavaScript 学习笔记七 闭包

 
阅读更多

// 闭包问题
//由于 JavaScript 中,函数是对象,
//对象是属性的集合,而属性的值又可以是对象,则在函数内定义函数成为理所当然,如果在
//函数 func 内部声明函数 inner,然后在函数外部调用 inner,这个过程即产生了一个闭包。
var outter = [];
function clouseTest (){
    var array = ["one","two","three","four"];
    for(var i=0;i<array.length;i++){
        var x = {};
        x.no = i;
        x.text = array[i];
        x.invoke = function(){
            alert(i);
        };
        outter.push(x);
    }
}

//调用这个函数
clouseTest();
outter[0].invoke();//4 这样的语句 x.invoke = function(){print(i);}并没有被执行,
outter[1].invoke();//4

//闭包允许你引用存在于外部函数中的变量。然而,它并不是使
//用该变量创建时的值,相反,它使用外部函数中该变量最后的值。
// 这类问题改进如下:
function clouseTest2 (){
    var array = ["one","two","three","four"];
    for(var i=0;i<array.length;i++){
        var x = {};
        x.no = i;
        x.text = array[i];
        x.invoke = function(no){
            alert(no);//在调用的当时就要用上,解决方法是立即执行该函数
        }(i);
        outter.push(x);
    }
}
clouseTest2 ();
 
分享到:
评论

相关推荐

    JS学习笔记之闭包小案例分析

    主要介绍了JS学习笔记之闭包,结合具体案例形式分析了javascript实现与使用闭包的相关操作技巧,需要的朋友可以参考下

    JavaScript函数、闭包、原型、面向对象学习笔记

    给大家分享了一篇关于JavaScript函数、闭包、原型、面向对象的知识点学习笔记内容,有兴趣的朋友参考下。

    JavaScript-学习笔记.docx

    自己学习笔记。视频:腾讯课堂:渡一教育 内容大纲: 预编译: 函数 闭包问题 对象 原型、原型链、call、apply 继承模式 对象克隆 数组 类数组 数组去重 自定义type方法(类似于typeof) try-catch es5.0严格模式 ...

    Javascript学习笔记之 函数篇(三) : 闭包和引用

    Javascript 中一个最重要的特性就是闭包的使用。因为闭包的使用,当前作用域总可以访问外部的作用域。因为 Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的。 模拟私有变量 代码如下...

    JavaScript闭包原理与用法学习笔记

    本文实例讲述了JavaScript闭包原理与用法。分享给大家供大家参考,具体如下: 闭包(Closure) 闭包是一个函数和词法环境的组合,函数声明在这个词法环境中。 词法作用域: 看下面的一个例子: function init() { ...

    javascript学习笔记(十三) js闭包介绍(转)

    一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 代码如下: var n=999;...

    JavaScript学习笔记之惰性函数示例详解

    本文主要给大家介绍了关于JavaScript惰性函数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 需求 我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次...

    面向对象javascript笔记

    面向对象的 javascript 学习 大家好,根据我的学习经验总结了下面一些javascript面向对象方法的知识,希望对一些接触这方面不多的人有所帮助,有不正确的地方请指正。 学习内容;引用,函数重载和类型检查,作用...

    谈一谈javascript闭包

    下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的...

    Javascript闭包(Closure)详解

    下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处...

    JS页面获取 session 值,作用域和闭包学习笔记

    本文实例讲述了JS页面获取 session 值,作用域和闭包。分享给大家供大家参考,具体如下: Javascript获取session的值: var name= "${sessioScope.变量名}"; 注意这里面需要使用 “” 把 El 表达式给括起来,否则...

    JavaScript中this用法学习笔记

    JavaScript这门语言中,最令人迷惑的地方有三个,闭包、this、原型。针对大多数人,可以利用词法作用域等避开this的坑,但是我们不能一直生活在舒适区,要敢于打破砂锅问到底,对我们来说也是一种提升。 一、一般对...

    JavaScript高级程序设计 读书笔记之八 Function类及闭包

    Function类及闭包,学习js的朋友可以参考下

    JavaScript高级整理

    谷粒学院学习笔记,内容包括 原型与原型链、执行上下文、执行上下文栈、变量提升、函数提升、作用域、作用域链、闭包、对象的多种创建模式、对象的继承模式、JavaScript事件循环机制等。

    javascript 设计模式与开发实践

    3、知识点的归纳总结也比较突出重点,方便二次学习以及做笔记 字体清晰不模糊,看起来舒服。 算法导论 第三版 中文版 清晰 PDF,全书共8部分35章节,内容涵盖基础知识、排序和顺序统计量、数据结构、高级设计和分析...

Global site tag (gtag.js) - Google Analytics