美文网首页
写给女友的JS教程—之JS闭包

写给女友的JS教程—之JS闭包

作者: 布尔教育 | 来源:发表于2016-11-29 15:31 被阅读0次

布尔教育 PHP学习笔记

朋友正在学JS, 到闭包这一块遇到了一些障碍.

我在网上帮她找了一些文章,但又写的又枯燥又长,我来写一篇简单点的吧.

从一次穿越说起—–

有姐妹俩,大桃花和小桃花相继出生,

有一次小桃花在河边洗衣服,出现奇特星像–十字连珠,小桃花穿越到了清朝.

还进宫见到了四阿哥,身边有一群宫女,和小桃花妹相称.

四阿哥问:”小桃花,你的姐姐是谁?”

小桃花怎么答? 这牵涉到一个问题—-

人穿越后,对其亲人的计算,以”出生时的环境“为准,还是”当前问她时的环境“为准?

如果你回答:”以当前问她是为准”,那你是”卖姐求荣”啊!

如果你回答:”以她出生时为准,即回答大桃花” —-,恭喜你,你已理解了闭包.

闭包即 函数定义时,连同其定义环境的上下文,形成一个整体.

不管该函数在哪儿运行,其对变量的访问,都要从定义处开始寻找.

例子1: 看你理解了闭包没


例子二: 再复杂一点,来个闭包计数器

如果你准备在页面内建一个”统一id号生成器”,

比如为各种事件句柄,或者事件调用统一分配不重复的id,

(jquery里就有类似的应用).

—如何来做呢?

你可能说:”好办,弄个全局变量,叫count, 每次都把+1″,

全局变量可以做到,但是这种做法不够优雅,造成全局变量污染.

更坏的是这个变量,容易被别人(不小心)定义的同名全局变量给覆盖了.:(

怎么办? 用闭包!

在上面的例子中,

1:除了counter()函数,其他语句对于cnt都够不着,摸不到.

2: 匿名函数执行后,给人的感觉是—-函数内的局部变量 cnt应该消失才对,

实际上没有消失—-被返回的函数所捕捉,形成了一个”环境变量+函数”的包,

外界又打不进去, 所以叫闭包啊.大笑

例子三: 如何在JS的面向对象应用中,写一个私有属性?

你已经猜到了,还是用闭包.

例子四: 看你确实掌握了闭包没?


闭包很简单,,只是大家给形容难了….

相关文章

  • 写给女友的JS教程—之JS闭包

    布尔教育 PHP学习笔记 朋友正在学JS, 到闭包这一块遇到了一些障碍. 我在网上帮她找了一些文章,但又写的又枯燥...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • 学习资料

    js相关 阮一峰JS教程 阮一峰es6教程 JS原型与闭包 正则表达式 canvas学习 插件库相关 babel ...

  • JS闭包

    JS闭包 闭包练习

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • JS闭包入门

    最近有看到朋友的面经里提到的JS闭包的问题,就想研究研究,以下是我对JS闭包的简单理解。 到底什么是JS闭包? 定...

  • JS闭包问题(二)

    在之前的JS闭包问题(一)文章中大概介绍了一下JS闭包,同时讲了闭包与变量之间的问题,今天我们继续聊闭包,聊聊闭包...

  • 好程序员web前端培训分享web前端面试题JS篇之闭包

    好程序员web前端培训分享web前端面试题JS篇之闭包,JS中关于闭包的相关知识。如果你想参加web前面工作,那么...

  • js之闭包

    变量的作用域 在JavaScript中,函数内部可以读取全局变量。 但是,函数外部无法读取函数内部的局部变量。 这...

  • js之闭包

    前言:好久没写过东西了,今天突发奇想把自己之前学习中自己对于js理解以及做的笔记整理一下分享出来,同大家一起学习进...

网友评论

      本文标题:写给女友的JS教程—之JS闭包

      本文链接:https://www.haomeiwen.com/subject/qboapttx.html