1、return 方法() = 调用方法
2、return 方法名 = 返回函数对象引用(函数定义的内容)
<script>
/*
* 1、return 方法() = 调用方法
*
* 2、return 方法名 = 返回函数对象引用(函数定义的内容)
* */
//1、return 方法() = 调用方法
function f() {
function aa() {
document.write("aa")
}
function dd(){
document.write("bb")
aa();
}
return dd();
}
f();
// 2、return 方法名 = 返回函数对象引用(函数定义的内容)
function f() {
function aa() {
document.write("aa")
}
function dd(){
document.write("bb")
aa();
}
return dd;
}
var fun= f();
fun();
</script>
3、要点:function是对象,全局变量与局部变量的用法
<script language="JavaScript">
var a = 1;
function fn1(){
function fn2(){
document.write(a)
}
function fn3(){
var a = 4;
fn2();
}
var a = 5;
return fn3;
}
fn1();//调用fn1返回fn3函数,但函数fn3没有被调用
var fn = fn1();//相当于把fn3定义的函数传给fn
fn();//执行fn,等于执行fn3
/*
要点:function是对象,全局变量与局部变量的用法
解析:
var fn = fn1()中fn1()最先被调用,但是fn1()是有返回值的,它返回的是fn3函数对象的引用
所以,fn()实际上是调用了fn3,fn3函数里再调用fn2,fn2再alter变量a
那么为什么变量a是局部变量的5,而不是局部变量4,也不是全局变量的1?
1)就近原则,谁哪个变量离我最近,我就用谁!(排除1)
2)局部变量4 不在fn2的作用域 (排除4)
*/
</script>