资讯专栏INFORMATION COLUMN

JS学习笔记(第7章)(函数表达式)

xiaokai / 2173人阅读

摘要:递归闭包模仿块级作用域私有变量小结在编程中,使用函数表达式可以无需对函数命名,从而实现动态编程。匿名函数也称为拉姆达函数。函数声明要求有名字,但函数表达式不需要。中的函数表达式和闭包都是极其有用的特性,利用它们可以实现很多功能。

1、递归 2、闭包 3、模仿块级作用域 4、私有变量 5、小结

在JavaScript编程中,使用函数表达式可以无需对函数命名,从而实现动态编程。匿名函数也称为拉姆达函数。
1、函数表达式的特点:

(1)函数表达式不同于函数声明。函数声明要求有名字,但函数表达式不需要。没有名字的函数表达式也叫做匿名函数;

(2)在无法确定如何引用函数的情况下,递归函数就会变得比较复杂;

(3)递归函数应该是中应用arguements.callee来递归地调用自身,不要使用函数名,因为函数名可能会发生变化;

2、当在函数内部定义了其他函数时,就创建了闭包。闭包有权访问包含函数内部的所有变量,原理如下:

(1)在后台执行环境中,闭包的作用域链包含着它自己的作用域、包含函数的作用域和全局作用域;

(2)通常,函数的作用域及其所有变量都会在函数执行结束后被销毁;

(3)但是,当函数返回一个闭包时,这个函数的作用域将会一直在内存中保存到闭包不存在为止;

3、使用闭包可以在JavaScript中模仿块级作用域(JavaScript本身没有块级作用域的概念)

(1)创建并立即调用一个函数,这样既可以执行其中的代码,又不会再内存中留下对该函数的引用;

(2)结果就是函数内部的所有变量都会被立即销毁——除非将某些变量赋值给了包含作用域(即外部作用域)中的变量;

4、闭包还可以用于在对象中创建私有变量,相关概念和要点如下:

(1)即使JavaScript中没有正式的死有对象属性的概念,但可以使用闭包来实现公有方法,而通过公有方法可以访问在包含作用域中定义的变量;

(2)有权访问私有变量的公有方法叫做特权方法;

(3)可以使用构造函数模式、原型模式来实现自定义类型的特权方法,也可以使用模块模式、增强的模块模式来实现单例的特权方法。

JavaScript中的函数表达式和闭包都是极其有用的特性,利用它们可以实现很多功能。不过因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109085.html

相关文章

  • JS学习笔记5)(String类型)

    摘要:字符串大小写转换方法和则是针对特定地区的实现。可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中将字符串转换为数组。分隔符可以是字符串,也可以是一个对象。 1、对象创建 String类型是字符串的对象包装类型,可以像下面这样使用String构造函数来创建。 var stringObject = new String(hello world); String对象...

    rose 评论0 收藏0
  • JS学习笔记6)(创建对象的7种模式)

    摘要:工厂模式没有解决对象识别的问题即怎样知道一个对象的类型构造函数模式使用构造函数的主要问题,就是每个方法都要在每个实例上重新创建一遍。创建要返回的对象可以在这里定义私有变量和函数添加函数注意寄生构造函数中是返回对象注意寄生构造函数中是 1、工厂模式 没有解决对象识别的问题(即怎样知道一个对象的类型) function createPerson(name, age, job) { ...

    Render 评论0 收藏0
  • 我的开源 GitBook: Python 之旅

    摘要:我在写作的过程中,给自己提了一个要求尽量深入浅出,条理清晰。至于是否达到了,希望读者们多多批评指正,并给我提意见和建议。第章介绍中的函数式编程,包括匿名函数闭包和装饰器等。第章介绍使用处理进程线程和协程。 showImg(https://segmentfault.com/img/remote/1460000007990784?w=268&h=385); 在学习和使用 Python 的过...

    赵连江 评论0 收藏0
  • JS学习笔记18)(JavaScript与XML)

    摘要:函数接收三个参数上下文节点表达式和可选的命名空间对象。命名空间对象应该是下面这种字面量的形式。使用样式表转换文档跨浏览器使用这个函数接收两个参数要执行转换的上下文节点和文档对象。 showImg(https://segmentfault.com/img/bVbvHVd?w=962&h=496); 本章主要讲解了以下四个问题: 1、将XML解析为DOM文档 跨浏览器把XML解析为DOM文...

    GT 评论0 收藏0
  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<