CSDN话题挑战赛第2期
参赛话题:学习笔记
** 😎今日份学习笔记📒 ** ⭐⭐
匿名函数
匿名函数
- 没有函数名的函数:
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(){
(function(){
var a="局部变量";
})();
console.log(a);//报错 a is not defined
}
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);
|