js基础之回调函数,匿名函数,闭包
匿名函数
匿名函数
- 没有函数名的函数:
function(){ }
- 作用:闭包;模拟块级作用域,减少全局变量
自我调用:
- 匿名函数单独运行会报错, 需要()包裹
function (){ console.log("a"); } //require a function name
- 执行匿名函数,在匿名函数后面加上( )即可
(function (){ console.log("a"); })();//a 立即执行
-
**传参:**传递的参数可以是数字,字符串,还可以是函数(回调)
直接将参数写到括号内即可:
(function (str){ console.log("你"+str); })("好"); //你好
匿名函数的应用:
-
函数表达式
//将匿名函数赋值给变量fn。 var fn=function(){ console.log("a"); } -
实现块级作用域
function fun(){ <span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span> <span class="token keyword">var</span> a<span class="token operator">=</span><span class="token string">"局部变量"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//报错 a is not defined</span> <span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span> <span class="token keyword">var</span> a<span class="token operator">=</span><span class="token string">"局部变量"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//报错 a is not defined</span> } fun();
-
事件、对象
-
闭包返回值
return function(){ }
闭包
- 指有权访问一个函数作用域中变量的过程.
- 闭包是一种保护私有变量的机制,保护里面的私有作用域变量不受外界干扰。
- 形成条件:函数嵌套;内部函数用到了外部函数的局部变量;外函数将内函数return出去,相当于成为全局变量
实例1
var add = (function () { //获取内部函数 var counter = 0; return function () { return counter += 1;} })(); //自我调用函数 add(); //调用内部函数 add(); console.log(add()); // 计数器为 3
实例2
function fun() { var num = 10; function A() { console.log(num); } return A; //返回函数 } fun()();//10 外部函数获取内部函数变量的值
回调函数
- 指把一个函数当作参数传递给另一个函数
- 在一个函数中调用另外一个函数就是回调(callback)
- 调用时传入的函数赋值给了callback
- 不是单独存在的
实例:
function test(value){ console.log(value);//我是回调函数 } function fun(callback,value) {//callback作为一个参数(名字随便取)传递进来 console.log(value);//先执行 callback(value);//调用回调函数,后执行 console.log(callback===test) /*** true ***/ } fun(test,'我是回调函数');
//定时器 setInterval(function(){ console.log("回调函数每1秒钟会被执行一次"); },1000);
本文来自博客园,作者:吾不图,转载请注明原文链接:https://www.cnblogs.com/nilyo/p/16890468.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律