当前位置:首页 > Web开发 > 正文

那么就促成JS的回调函数

2024-03-31 Web开发

标签:

(一)声明函数

直接量(字面量)声明

function f1(){ ... }

表达示声明

var f2 = function(){ ... }

内置结构函数声明(使用此方法情况很少,一般不用,所以就不过多赘述)

var f3 = new function(); (二)挪用函数

直接量声明函数挪用

f1(); function f1(){ console.log(111); } f1();

功效:

111 111

声明前后都可挪用

表达示声明函数挪用

f2(); var f2 = function(){ console.log(222); } f2();

功效:

异常:f2不是一个要领(原因:js的变量和函数提升) 222

只能先声明后挪用

(三)函数的形参和实参

以后更新

(四)回调函数

1. 在JS中函数自身的感化域在声明的处所,而不是在挪用的处所

2. 在Js中函数是被称为第一等百姓,因为函数是js的一个特殊的数据类型,
JS是以值的形式来措置惩罚惩罚函数的,那么就促成JS的回调函数。

//1.声明赋值变量a var a = 1; function f1(f){ //3.进入f1()要领 console.log(f); //4.声明赋值变量a var a = 2; //5.执行f()要领,也就是f2()【可以理解为指针或引用】,并寻找f2()声明处并执行 f(); } function f2(){ //6.执行f2(),寻找变量a(先找到全局变量a,所以没有找到局部变量a,至于它为什么没有套娃执行和找不到局部a,这是js的运行道理,也就是js感化域链) console.log(a); } //2.将函数名f2传入函数f1内 f1(f2);

功效:

[Function: f2] 1 (五)函数闭包

闭包就是一个函数,这个函数能够访谒其他函数的感化域中的变量。

闭包的感化:

1.保存感化域

2.函数表里的桥梁

//0.声明赋值全局a var a = 2; //0.声明要领f1() function f1(){ //1.声明赋值局部a var a = 1; //2.声明要领f2() function f2(){ //6.发明a,在感化域链中寻找a,,首先找到了f1()的局部a,并打印 console.log(++a); } //3.终止f1运行并返回f2的指针 return f2; } //0.声明并运行f1() var f = f1();//4.f能够引用f2()要领,因为f还保存f2()的指针,所以f1()留在内存的数据暂且不能销毁。 f(); //5.执行f2(),因为f还保存f2()的指针,所以f1()留在内存的数据暂且不能销毁。 f(); //6.同上,因为始终生存着f1()的数据,所以以上改削的f1()的a一直都是一个值。 f(); //7.同上 f(); //8.同上

功效:

2 3 4 5

原因:
由于f1的运行功效是返回f2,那么又由于感化域链及函数自身感化域的问题,导致f1运行结束后,不能销毁变量,因此形成了闭包。

Js学习小结(二)函数

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31166.html