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(),然后就自调用呗~
注意这段代码讲的是变量作用域。
变量取值:
到创建这个变量的函数的作用域中取值
一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。
但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。
作用域链也是个考点嘿嘿嘿~
实操中有没有这么难的代码啊?
找个工作好难啊!保佑!