前端学习 第六弹: javascript中的函数与闭包

前端学习 第六弹:  javascript中的函数与闭包

当function里嵌套function时,内部的function可以访问外部function里的变量

function foo(x) {
    var tmp = 3;
    function bar(y) {
        alert(x + y + (++tmp));
    }
    bar(10);
}
foo(2)

这时无论怎么运行输出的都是16,但这不是闭包

如果我们返回内部函数,内部function会close-over外部function的变量直到内部function结束

function foo(x) {

var tmp = 3;
    return function (y) {
        alert(x + y + (++tmp));
    }
}
var bar = foo(2); // bar 现在是一个闭包
bar(10);

这时反复运行会输出16,17,18.....

这就是一个闭包

时间: 2024-08-02 11:03:50

前端学习 第六弹: javascript中的函数与闭包的相关文章

好程序员web前端学习路线之在JavaScript中使用getters和setter

好程序员web前端学习路线之在JavaScript中使用getters和setter,大多数面向对象的编程语言都存在getter和setter,包括JavaScript.它们是代码构造,可帮助开发人员以安全的方式访问对象的属性.使用getter,您可以从外部代码访问("获取")属性的值,而setter允许您更改("设置")它们的值.我们将向您展示如何在JavaScript中创建getter和setter. JavaScript对象可以具有多个属性和存储的静态数据和动

好程序员前端学习路线分享模拟JavaScript中面向对象技术

好程序员前端学习路线分享模拟JavaScript中面向对象技术,在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习.JavaScript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术.?一.原型对

JavaScript中的函数与闭包

转自javascript深入理解js闭包_javascript技巧_脚本之家 http://www.jb51.net/article/24101.htm 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; fu

Web前端学习-第六课JavaScript篇

Q11:什么是执行环境和作用域?使用代码说明. 执行环境定义变量或者函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 此函数包含两个对象,他自己的变量对象,全局环境的变量对象,可以在函数内部访问变量color就是因为在这个作用域链中找到它. 延长作用域链::try-catch语句的catch块 With语句 没有块级的作用域: Q12:什么是HTTP?什么是HTTP头部?如何在AJAX中填写HTTP头部? HTT

【前端学习笔记】原生Javascript中通过JSONP(前端常用方法)进行跨域

Ajax跨域-------------------------- 跨域: 跨域名 一个域名下的文件去请求了和他不一样的域名下的资源文件,那么就会产生跨域请求 这是ajax的跨域限制问题 跨域的解决 : jsonp: json width padding 核心: 1.script标签 2.用script标签加载资源是没有跨域问题的 3.script只认文件的实际内容,而不是后缀.只要内容是合法的js就能用 流程: 1.在资源加载进来之前定义好一个函数,这个函数接受一个参数(要取的数据) ,而将要加

前端学习 第七弹: Javascript实现图片的延迟加载

前端学习 第七弹: Javascript实现图片的延迟加载 为了实现图片进入视野范围才开始加载首先: <img    src="" x-src="/acsascasc.jpg"> 这时src是空的没有加载图片 $(window).scroll(function (){ $("img").each(function(){ if ($(this).src == ""){ if ( ($(this).offset().t

前端学习 第五弹: CSS (一)

前端学习 第五弹: CSS (一) 创建css: <link rel="stylesheet" type="text/css" href="mystyle.css" /> 外联 <style type="text/css"> hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40

前端开发:面向对象与javascript中的面向对象实现(一)

前端开发:面向对象与javascript中的面向对象实现(一) 前言: 人生在世,这找不到对象是万万不行的.咱们生活中,找不到对象要挨骂,代码里也一样.朋友问我说:“嘿,在干嘛呢......”,我:“找不到对象!”,他:“就你那样也能找得到对象?”.我一脸黑线...... 废话不多说,今天博主要跟大家聊的是<面向对象与javascript中的面向对象实现>”. 面向对象理解: 面向对象是一种对现实世界理解和抽象的方法,是一种先进的程序设计理念,是一种比较抽象的,多形态的设计模式.我们可以这么理

前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的影响,单单是自己的念想受到了一定得局限,想法不能够像平地而起的高楼大厦建成一样.可是那大楼也是有烂尾的呀,我觉得最重要的还是外在环境与个人观念的先决条件,决定了拖延症的症状的好坏,有那么一些人,它也有拖延症,但是它在拖的中间,想的更多,看的更远.事情在做的时候更加有条不紊,这拖延症这样看来,它也是好