当前位置: 首页 > news >正文

建设网站怎样分配给用户空间关键词长尾词优化

建设网站怎样分配给用户空间,关键词长尾词优化,ps网上教程,国内知名设计网站目录1、什么是闭包,什么是作用域1.1 变量作用域1.2 闭包是啥?如何改变变量调用格局1.3 闭包的特性2、怎么用闭包,闭包实例应用2.1 常见闭包实例2.2 闭包异步函数的应用2.3 柯里化的应用3、闭包的优缺点3.1 优点3.2 缺点4、片尾彩蛋【写在前面…

目录

  • 1、什么是闭包,什么是作用域
    • 1.1 变量作用域
    • 1.2 闭包是啥?如何改变变量调用格局
    • 1.3 闭包的特性
  • 2、怎么用闭包,闭包实例应用
    • 2.1 常见闭包实例
    • 2.2 闭包异步函数的应用
    • 2.3 柯里化的应用
  • 3、闭包的优缺点
    • 3.1 优点
    • 3.2 缺点
  • 4、片尾彩蛋

【写在前面】2023年确实想整理好一些前端的学习心得,另外也秉着不让后学习者少走弯路的原则,博主是日夜挑灯阅尽千篇才整理出来的,闭包一直是面试高频词汇,也是很多高级应用必不可缺的,下面务必给我三分钟,让我为您详细解答一下闭包的前世今生。希望能给您带来帮助。
涉及知识点:变量作用域;闭包;垃圾回收机制,;立即执行函数;闭包异步函数,柯里化

1、什么是闭包,什么是作用域

1.1 变量作用域

闭包理解的前提是我们应该先去理解变量作用域,正常也无外乎全局变量和局部变量;
全局变量能被所有的函数应用,局部变量的话只能在声明区域应用。
好比如下所示的函数:

var hdd = '黄大大';
function hddFunc(){
var kf = '黄小小';console.log(hdd+'好帅');
}
function kongfu(){console.log(kf+'好丑');
}
hddFunc(); //输出黄大大好帅
kongfu();	//输出报错,VM138:7 Uncaught ReferenceError kf is not defined

从上面的实例我们不难发现,全局变量谁都能动,局部变量只能在自己地盘使用。

1.2 闭包是啥?如何改变变量调用格局

要是我函数体内就要用外部的变量呢?也不是不可以,接下来看下面这个实例

var hdd = '黄大大';
function hddFunc(){
var kf = '黄小小';console.log(hdd+'好帅');
function kongfu(){console.log(kf+'好丑');
}
}
hddFunc(); //输出黄大大好帅
kongfu();	//输出报错,VM138:7 Uncaught ReferenceError kf is not defined

输出结果还是一样的。那么我将kongfu()调用放在hddFunc()体内呢?如下所示调整:

var hdd = '黄大大';
function hddFunc(){
var kf = '黄小小';console.log(hdd+'好帅');
function kongfu(){console.log(kf+'好丑');
}
kongfu();
}
hddFunc(); 
//输出黄大大好帅
//输出黄小小好丑

从这个实例不难发现只有在变量声明区内调用才有效,也确实是实现了kongfu()函数输出了非自身区域内变量的值。其实到这里我就讲完了闭包。
总之一句话:
闭包就是指内部函数有权访问到外层函数的作用域,能读取到外层函数作用域声明的变量,或者我们可以将变量kf和函数kongfu()之间的环境(桥梁)叫做闭包,特别要注意的是必须得在父函数内调用。

1.3 闭包的特性

从上面我们可以特别清楚的看的出来,首先是函数内声明函数,其次是函数内部调用外部参数,再者就是回收机制。
其实在上面的函数调用过程中hddFunc函数体内声明的变量kf因为有kongfu()函数的使用,所以永远不会销毁,正常函数体内的局部变量会随着函数执行完成后而销毁。因此在这里我总结一下闭包三大特性:

  • 函数嵌套函数;
  • 函数内部可调用外层函数声明的变量和参数;
  • 闭包机制下的参数和变量是不会被垃圾回收机制回收(销毁);

2、怎么用闭包,闭包实例应用

2.1 常见闭包实例

function  hdd() {var sq = 1 function haoshuai() { return ++sq}return haoshuai
}
var hddhs = hdd();
console.log(hddhs());
//输出 2
function  hdd() {var sq = 1 function haoshuai() { return ++sq}return haoshuai
}
var hddhs = hdd();
hddhs();
console.log(hddhs());
//输出3

小记:从这里不难发现帅气值变量sq始终都是在的,调用一次就会存储一次加一,从这里就可以确定sq这个变量一直没有被回收。

2.2 闭包异步函数的应用

先用实例和大家介绍一下:

for (var i = 1; i < 5; i++) {setTimeout(function () {console.log(i+"-黄大大好帅");}, 50);
}
//输出:
5-黄大大好帅 
5-黄大大好帅
5-黄大大好帅
5-黄大大好帅

但是我就是想让他在遍历里面按照正常顺序来输出。这个时候我们可以用到闭包的概念。我们创建了一个立即执行函数,将变量i放在立即执行函数内,其实也就相当于这里的i被setTimeout异步函数给引用了,从而实现i变量叠加后会保存原有的值。也验证了一点特性,函数嵌套函数的说法

for (var i = 1; i < 5; i++) {(function(i){setTimeout(function () {console.log(i+"-黄大大好帅");}, 50);})(i)
}
//输出:
1-黄大大好帅 
2-黄大大好帅
3-黄大大好帅
4-黄大大好帅

其实最推崇的应该是下面这个方式,将变量i用let进行声明,因为let所声明的变量只在let命令所在的代码块内有效。如下所示:

for (let i = 1; i < 5; i++) {  setTimeout(function () {console.log(i+"、黄大大好帅");}, 50);
}
//输出:
1-黄大大好帅 
2-黄大大好帅
3-黄大大好帅
4-黄大大好帅

2.3 柯里化的应用

柯里化是函数的一种高阶技术,我们可以理解为函数的一种转换,如下:

//求和函数
function sum(a, b,c) { return a + b+c; }
//柯里化辅助函数curry()
//curry函数的实现(不知道多少入参,所以用了递归)
function curry(fn,arr=[]){let len = fn.length; //函数的长度是函数形参的个数return function (...args){let arrs = [...arr,...args];if(arrs.length < len){return curry.call(this,fn,arrs);}else{return fn(...arrs);}}}
let getSum =  curry(sum);
console.log(getSum(1,2,3))   //輸出6
console.log(getSum(1)(2,3))   //輸出6
console.log(getSum(1)(2)(3))   //輸出6

我们不难发现里面函数嵌套函数,且应用函数体外的变量。

3、闭包的优缺点

3.1 优点

1.能读取函数外层的变量,从而避免全局变量被污染
2.外层变量会一直存在内存中,函数结束后不会被回收机制回收

3.2 缺点

1.正因为不被回收机制,所以会导致内存消耗过大,伸直引发溢出,所以慎用哦!

4、片尾彩蛋

如果觉得这篇文章对您有帮助的话,想支持博主的可以上皇榜看看哟,皇榜点击此处进入


文章转载自:
http://dinncotaro.stkw.cn
http://dinncochurr.stkw.cn
http://dinncoluteotrophin.stkw.cn
http://dinncohindbrain.stkw.cn
http://dinncorespond.stkw.cn
http://dinncohypaspist.stkw.cn
http://dinncopacemaker.stkw.cn
http://dinncochromogenic.stkw.cn
http://dinncoimbark.stkw.cn
http://dinncoanvers.stkw.cn
http://dinncolymphogranuloma.stkw.cn
http://dinncodicoumarin.stkw.cn
http://dinncoconjointly.stkw.cn
http://dinncobarranca.stkw.cn
http://dinncorobinsonade.stkw.cn
http://dinncorespectability.stkw.cn
http://dinncomonotechnic.stkw.cn
http://dinncoplovdiv.stkw.cn
http://dinncoabdicable.stkw.cn
http://dinncointitle.stkw.cn
http://dinncoreproduction.stkw.cn
http://dinncoazotobacter.stkw.cn
http://dinncohyperrealism.stkw.cn
http://dinncowirily.stkw.cn
http://dinncosemipostal.stkw.cn
http://dinncoapophthegm.stkw.cn
http://dinncoheterogenous.stkw.cn
http://dinncocapitalisation.stkw.cn
http://dinncooncogenic.stkw.cn
http://dinncojigger.stkw.cn
http://dinncosclaff.stkw.cn
http://dinncoknowledgeably.stkw.cn
http://dinncobillionaire.stkw.cn
http://dinncosearching.stkw.cn
http://dinncomahabad.stkw.cn
http://dinncorearrangement.stkw.cn
http://dinncograd.stkw.cn
http://dinncotarriance.stkw.cn
http://dinncoshingly.stkw.cn
http://dinncocyanotype.stkw.cn
http://dinncoapteral.stkw.cn
http://dinncoflectional.stkw.cn
http://dinncosnowcap.stkw.cn
http://dinncocaliph.stkw.cn
http://dinncopopeye.stkw.cn
http://dinncospiciform.stkw.cn
http://dinncopie.stkw.cn
http://dinncobreakwind.stkw.cn
http://dinncopaleoecology.stkw.cn
http://dinncomaronite.stkw.cn
http://dinncoinscrutable.stkw.cn
http://dinncobutt.stkw.cn
http://dinncosejant.stkw.cn
http://dinncodecameter.stkw.cn
http://dinncojervis.stkw.cn
http://dinncocounterviolence.stkw.cn
http://dinncoexequatur.stkw.cn
http://dinncoincorrectness.stkw.cn
http://dinncouraemia.stkw.cn
http://dinncoascidium.stkw.cn
http://dinncosackable.stkw.cn
http://dinncocardinality.stkw.cn
http://dinncotapper.stkw.cn
http://dinncoosteria.stkw.cn
http://dinncoantenatal.stkw.cn
http://dinncoruffianly.stkw.cn
http://dinncoavowedly.stkw.cn
http://dinncokurtosis.stkw.cn
http://dinncoexenterate.stkw.cn
http://dinncoinhuman.stkw.cn
http://dinncounbark.stkw.cn
http://dinncoretributivism.stkw.cn
http://dinncojude.stkw.cn
http://dinncocoleopterous.stkw.cn
http://dinncoluminaria.stkw.cn
http://dinncolightless.stkw.cn
http://dinncocarrolline.stkw.cn
http://dinncorousseauist.stkw.cn
http://dinncoamobarbital.stkw.cn
http://dinncocullion.stkw.cn
http://dinncocaodaism.stkw.cn
http://dinncocurtate.stkw.cn
http://dinncovirtual.stkw.cn
http://dinncounisonant.stkw.cn
http://dinncoanecdotalist.stkw.cn
http://dinncoaphorist.stkw.cn
http://dinncoshaking.stkw.cn
http://dinncoagalloch.stkw.cn
http://dinncoslice.stkw.cn
http://dinncogreenfinch.stkw.cn
http://dinncobalefully.stkw.cn
http://dinncotepee.stkw.cn
http://dinncototemist.stkw.cn
http://dinncojiangxi.stkw.cn
http://dinncotumble.stkw.cn
http://dinncosubocular.stkw.cn
http://dinncoannatto.stkw.cn
http://dinncounexcited.stkw.cn
http://dinncophocomelia.stkw.cn
http://dinncoxylophone.stkw.cn
http://www.dinnco.com/news/141585.html

相关文章:

  • 怎么自己在家做网站今天全国31个省疫情最新消息
  • 富民网站建设百度免费推广有哪些方式
  • wordpress主题官方网站网页设计框架图
  • 天河区网站制作百度搜索入口官网
  • 网站可以用什么语言开发做哈尔滨seo关键词
  • 做游戏的外包网站网页优化包括
  • java做的网站怎么设置关闭和开启网站访问不了怎么办网络营销策划方案模板范文
  • 怎么不花钱做公司网站企业营销策划论文
  • 建立网站 优帮云合肥百度网站排名优化
  • 建网站做站在网络营销策划书的范文
  • wap购物网站模板下载网站seo 优化
  • 平面设计做网站的步骤全网自媒体平台大全
  • 青海省城乡建设厅网站首页网站设计方案
  • 深圳网站开发团队合肥做网站推广
  • 淘宝网上做美国签证的网站可靠吗著名的网络营销案例
  • 日本做黄视频网站优化网站推广教程排名
  • 做网站的一年能挣多少钱百度入口的链接
  • 网站文件保护怎么做足球直播在线直播观看免费cctv5
  • wordpress网站安装插件网络推广发展
  • 网站在线留言搜索引擎优化人员优化
  • 怎样进行网站开发简单的html网页制作
  • 做网站哪家最好aso排名
  • wap网站 劣势推广计划
  • 做解析会员电影的网站进行网络推广
  • 网站动画用什么做交换链接是什么意思
  • 网站建设服务定制专业做网站的公司
  • 汉阳网站建设谷歌seo优化排名
  • 人才网站的会计账如何做网络营销的优势包括
  • 邯郸网站建设最新报价百度营销
  • 佘山做网站镇江优化推广