《return function 和return function() 的区别》
# return function
return function 返回的是一个函数
function a() {
console.log('aaa')
function b() {
console.log('bbb')
}
return b
};
a(); // 输出 aaa 和 function b()
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
var s = a();
console.log(s) // 输出 aaa 和 function b()
s(); // bbb =》 执行了 function b()
1
2
3
2
3
var s = a();
console.log('111')
s(); // aaa 111 bbb
1
2
3
4
2
3
4
s = a() 执行打印了 aaa,然后里面的 b() 只是被 return 还未执行,于是按顺序 打印 111,再到 s(),开始执行 b(),于是打印出 bbb
可关注下执行顺序
# return function()
return function() 返回的是函数执行结果
function a() {
console.log('aaa')
function b() {
console.log('bbb')
}
return b()
};
a(); // aaa bbb
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
var s = a();
console.log(s) // aaa bbb =》a() 和 b() 都已执行
s(); // s is not a function =》 s 是b() 执行后的结果,不是一个函数,故报错
1
2
3
2
3
var s = a();
console.log('111')
s(); // aaa bbb 111 s is not a function
1
2
3
2
3
s = a() 执行打印了 aaa,然后里面的 b() 在 return 时执行,打印 bbb,结束后跳出开始打印 111。
s 是 b() 执行的结果,不是一个函数,故报错
function a() {
console.log('aaa')
function b() {
console.log('bbb')
return 1000
}
return b()
};
var s = a();
console.log(s) // aaa bbb 1000
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12