为什么函数内部定义的函数可以在外部调用
来源:2-5 闭包
hunmix
2018-03-30 10:28:26
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<script>
function f1(){
var n=1;
add1=function(){
console.log("add1");
}
function add2(){
console.log("add2");
}
}
var fn=f1();
add1();
add2();
</script>
</body>
</html>结果如图:

有两个问题:1、为什么内部定义的函数外部可以访问,是什么原理呢?2、为什么第一种定义方式可以访问而第二种不行?
1回答
add1=function(){
console.log("add1");
}
这段代码是将匿名函数赋值给一个变量,函数内用var声明的变量是局部变量,外部不能被访问,这里的add1是全局变量,所以外部可以访问的。
第二种一般当做闭包,来获取fi函数内的局部变量。
相似问题