JS函数作为参数
JS函数作为参数无参有参匿名类型来个狠的:自调用JS函数作为参数
今天我们来康一康函数作为参数~
无参
这是无参数函数作为参数function test1(Func){Func();}function test2(){alert("我是test2");}test1(test2); //无参数只写函数名
成功执行test2:
有参
现在调用的函数有一个参数了:function test1(Func){Func(mydata);}function test3(data){alert(data);}test1(test3("zhangran")); //有参数带上参数
匿名
上难度:匿名函数function test1(Func){Func("hello");}test1(function (data)//这里的函数没有名字对不对?{alert(data);});
这里的 “hello” 直接传过来了呢~
类型
再来点:
这段函数有点复杂,看来 a 的类型不是函数
改进一下:
var fn = (a)=>{//如果这个参数a是函数,那么就执行这个函数,否则打印a的值if(typeof a === "function"){//a();console.log("function");}else{console.log(a)}}fn(test(2))function test(b) {//console.log(b)console.log("Run");}
你看 a 的类型是undefined。
来个狠的:自调用
var x = 10;function fn(){console.log(x);}function show(f){var x = 20;(function(){f(); // 10})()//自调用}show(fn);
fn() 作为参数传入了show(),然后就自调用呗~
注意这段代码讲的是变量作用域。
变量取值:
到创建这个变量的函数的作用域中取值
一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。
但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。
作用域链也是个考点嘿嘿嘿~
实操中有没有这么难的代码啊?
找个工作好难啊!保佑!