js函数分类的理解笔记

3 篇文章 0 订阅
订阅专栏

目录

匿名函数

递归函数

回调函数

构造函数

闭包函数 

函数柯里化


匿名函数

一般来说  函数结构如下:

function  fn(callback){ console.log('do something')};

 一般来说,关键字,函数名,参数名,函数体四件东西缺一不可。但是呢

如下图, 这样写她也不会报错。他甚至还可以调用

 这样子叫做匿名函数的自运行.(即创建出来,立即执行)

优点:函数内部的变量不会对外部造成污染。(解释就是我们都用x作为变量,我用不影响你用)

(function(){

var x=10; var y=10;

console.log(x+y);

})()
(function(){

var x=10; var y=10;

console.log(x*y);

})()
//上述两个是完全独立的作用域,彼此不会相互干扰

缺点:代码之间很难通信(无法访问对方内部变量)

()的作用

在匿名函数的自运行中(function(){....}),这样的方式,将函数声明成了待执行的表达式

(function(){....})()-----这种方式相当于,我们拿到了函数本身,并进行函数调用;

由此我们可以到达一个思路,将函数的声明,转换为一个表达式。

+function(){.....}()//用的多

function(){.....}()

~function(){.....}()

void function(){.....}()

delete function(){.....}()

这些均可以实现函数的自运行和调用

递归函数

我们写一个经典递归函数的例子

//N!
//递归即传递回归  
function fn(N){
    if(N==1) return 1;//回归
    return N*fn(N-1);//传递
}

任何一个递归函数总会在某个节点停止传递,并且返回结果。

回调函数

我们由一个问题引出回调函数。

正常来说下面这两个函数,是依次执行。

然后我们为了提升代码执行效率,我们将函数修改成异步的操作

 

 因为添加了定时器,彼此构成了异步,异步函数的特点就是代码执行的不需要排队,(可以并行,提升了执行效率)

但是,如果我们不想让他们的输出变得和原来一样呢?

 我们把函数放到另一个函数内就行了。这个过程实现了回调。

回调函数总结

 如图,我们想要达到每个人的代码执行前,都要执行一次工具函数,这里隐藏了

xiaobai();  xiaohuang();xiaolv();三个函数 

对该公共函数,我们给工具函数一个参数,在函数内部进行回调。

构造函数

函数除了可以被当作函数,也可以视作一个对象

当我们通过new创建时。

function Fn(){
    
}
let obj=new Fn();//这里的Fn是一个构造函数。

我们习惯上构造函数的首字母需要大写。

构造函数会牵扯到相关dom操作。

目前的es中已经可以实现通过class内部写构造函数

闭包函数 

关于函数的闭包,我们在小学二年级的时候,老师不让进行函数内定义函数。但是,这种方式允许有。

首先

function a(){
    let x=1;
    function b(){
        console.log(x);
    }
    b();//我们可以在这个位置执行调用函数
}
b();//但这样我们就不能使用了,b()不是全局函数,无法在全局范围调用函数b

为了解决这一问题

function a(){
    let x=1;
       return function b(){
            console.log(x);
        }
}
let c=a();
C();//

关于函数c我们知道他和b的关系如下图所示。

 这个函数里,函数a形成的作用域,叫做闭包。闭包内的私有资源,无法直接在外部访问,但是可以间接访问,函数b叫闭包函数。

函数柯里化

柯里是个人。

 函数柯里化,利用闭包来保存一个临时变量。就是套娃。这部分我深入了解了在做补充

centos consul rpm
09-10
consul-1.2.2-1.el7.centos.x86_64.rpm是方便在centos linux 下直接安装consul服务注册中心服务的rpm软件包,安装之后直接通过IP:8500可访问
详解consul安装和配置
09-30
在具体使用 Consul 进行安装配置时,比如在 CentOS 6.5 x64 系统环境下,你可以从官方下载最新版本的 consul,如 consul_0.6.4_linux_amd64.zip。解压缩后,你会得到一个 consul 可执行文件。运行 consul 命令可以...
CentOS7.4+HDP+Ambari+consul+Elasticsearch安装部署文档.rar
07-12
CentOS7.4+HDP+Ambari+consul+Elasticsearch 安装部署文档
linux/CentOS查看系统编码/语言和修改系统编码/语言的方法
热门推荐
【小石头的茅坑】
12-27 53万+
1、查看字符编码和语言 使用locale命令,语言是en_US(美式英语),编码是UTF-8 2、修改字符编码和语言 修改/etc/sysconfig/i18n 先看一下修改前的 然后,如改成中文编码: LANG=en_US.UTF-8 改为 LANG="zh_CN.GBK" 然后在不重启的情况下重新加载i18n文件 #source /etc/sysconfig/i...
linux(centos)查看目录占用空间大小
【小石头的茅坑】
05-05 51万+
linux(centos)查看目录占用空间大小
CentOS7下普通账号通过systemctl管理服务需要输入root密码 AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
【小石头的茅坑】
03-12 48万+
使用root用户登录,按照下文修改配置文件,将三个参数改为yes https://blog.csdn.net/wjy1990831/article/details/87256382
CentOS(RedHat红帽系统) 开启/关闭服务,启用、禁用开机自启动,systemctl 工具使用
【小石头的茅坑】
04-29 48万+
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 以firewalld.service为例 启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewal...
keepalived实现主备服务器冗余双活+负载均衡
【小石头的茅坑】
05-06 48万+
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。 使用keepalived主要两个功能: 1、keepalived实现主备机冗余功能 如果用nignx做负载均衡服务器,万一负载均衡服务器宕机了,也就挂了。 而keepalived通过VIP完美解决了这个问题,keep...
SecureCRT 和 SecureFX 中文乱码问题解决,配置cd初始化目录 。配置ANSI颜色批量修改。
【小石头的茅坑】
03-21 47万+
1、找到session文件 SecureCRT\SecureCRTSecureFX_HH_x64_7.0.0.326\Data\Settings\Config\Sessions 2、改为"Filenames Always Use UTF8"=00000001 3、改为UTF-8
linux修改locale字符集编码为UTF-8/GBK,修改语言区域为zh-CN(中文-中国)
【小石头的茅坑】
06-10 47万+
linux修改locale字符集编码为UTF-8/GBK,修改语言区域为zh-CN(中文-中国)
linux安装telnet命令
【小石头的茅坑】
12-19 47万+
1、先检查CentOS7.0是否已经安装以下两个安装包:telnet-server、xinetd。命令如下: rpm -qa telnet-server rpm -qa xinetd     如果没有安装,则先安装安装命令: 2安装telnet yum list |grep telnet yum install telnet-server.x86_64 yum ins...
linux禁用CPU 禁用cpu内核
【小石头的茅坑】
06-14 47万+
我的是2C8核(每个CPU4个核) /sys/devices/system/cpu 如图,一共8个(0~7) 禁用第二个(第一个cpu的第二个核)CPU核 echo 1 > /sys/devices/system/cpu/cpu1/online 启用第二个(第一个cpu的第二个核)CPU核 echo 1 > /sys/devices/system/cpu/cp...
linux配置java环境变量,centOS redhat
【小石头的茅坑】
12-19 47万+
# add by maokengdeshitou 2018-12-19 export JAVA_HOME=/usr/local/jdk/jdk1.8.0_191 export PATH=$JAVA_HOME/bin:$PATH # add by maokengdeshitou 2018-12-19
linux查看、设置环境变量。临时变量、永久变量(用户变量、系统变量)
【小石头的茅坑】
05-20 47万+
linux查看、设置环境变量。临时变量、永久变量(用户变量、系统变量)
在Linux/window系统查询公网外网IP的几种办法
【小石头的茅坑】
02-16 47万+
几种在Linux/window下查询外网公网IP的办法
Linux清理内存buff/cache,手工释放内存空间
【小石头的茅坑】
06-18 47万+
Linux下内存buff/cache占用过多问题解决 https://blog.csdn.net/vtopqx/article/details/80774669 手工释放linux内存——/proc/sys/vm/drop_cache https://blog.csdn.net/wyzxg/article/details/7279986/ ...
通过lsyncd 设置两个linux(centOS7)服务器之间的目录文件互相实时同步
【小石头的茅坑】
05-06 47万+
官网开源地址 https://github.com/axkibe/lsyncd 官网配置手册 https://axkibe.github.io/lsyncd/ 注意:Lsyncd存在数据被替换风险,操作前请做好数据备份! Lsyncd 是一个简单高效的文件同步工具,通过lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inoti...
yum命令详解。yum install安装卸载,yum配置仓库
【小石头的茅坑】
09-17 47万+
Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
centos利用docker安装consul
最新发布
09-19
可以使用docker run命令在CentOS安装consul。首先,下载并运行consul镜像,命令如下: ``` docker run -d --name consul consul:1.4.2 ``` 接下来,你可以通过运行其他的consul节点来建立一个consul集群。例如,你可以运行以下命令来创建最后一个consul节点: ``` docker run -d --name consul-03 -e CONSUL_BIND_INTERFACE=eth0 docker.io/consul:latest agent -server -join 172.17.0.1 ``` 这样,你就成功地在CentOS上使用docker安装consul
写文章

热门文章

  • spawn cmd.exe ENOENT 错误 解决办法 4871
  • webpack不是内部或外部命令,也不是可运行程序的解决办法 3604
  • 30个html+CSS和html5动画经典案例 3184
  • 问题:插件报错 Plugin error ***** contains invalid plugin descriptor 2071
  • 解决“export ‘default‘ (imported as ‘VueRouter‘) was not found in ‘vue-router‘问题 1347

分类专栏

  • 摸鱼分栏 4篇
  • 报错修改 5篇
  • 前端 5篇
  • maven 4篇
  • 小技巧 1篇
  • 学习笔记 3篇
  • 软工 1篇

最新评论

  • spawn cmd.exe ENOENT 错误 解决办法

    bluebaby258: 我没重启,但真的有用。谢谢!

  • spawn cmd.exe ENOENT 错误 解决办法

    驼同学.: 最后请务必重新启动计算机! 这样所设置的环境变量才能生效!

  • 问题:插件报错 Plugin error ***** contains invalid plugin descriptor

    jkxbest: 不用,你直接将对应安装包覆盖安装一次就好了

大家在看

  • 【玩转Linux】不允许你还不会Linux简单的指令 1435
  • 时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型
  • 已知本原多项式在有限域GF(2^n)上的乘法运算(一个例子)
  • 回归预测|基于鹈鹕优化径向基神经网络的数据回归预测Matlab程序POA-RBF 多特征输入单输出 含基础RBF 865
  • 为什么要关闭SMB V1

最新文章

  • 旺旺仙贝旺旺雪饼
  • 网页存储图片
  • 【不是ruoyi也行】【ruoyi】关于导入sql脚本产生表单乱码
2024年1篇
2023年1篇
2022年22篇
2021年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王宿迁营销网站优化联系人伦敦网站优化教程知名的网站优化推荐网站导航优化特点启东seo网站优化武威网站优化推广多少钱广州网站首页关键词优化技巧南阳平台seo网站优化濮阳企业网站优化推广有哪些孟津网站优化价格vue做的网站有利于优化吗南山网站优化费用招商大型网站优化优化网站制作响应式的网站做优化好吗吉林服务网站优化口碑好驻马店优化网站建设南开区网站seo优化排名网站优化上线是什么意思seo 网站导航优化宝安区企业网站优化重庆网站优化公司怎么样荆州工厂网站优化要多少钱宁波公司网站建设新站快速优化奉化网站关键词优化费用铁岭服装行业网站优化案例郑州网站排名优化公司江阴无锡网站优化三水网站优化百度快照和网站优化有什么区别香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化