《return function 和return function() 的区别》


2017-10-26 上次更新时间:8/4/2020, 8:24:44 PM 0 javascript

# 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
var s = a();
console.log(s) // 输出 aaa 和 function b()
s(); // bbb =》 执行了 function b()
1
2
3
var s = a();
console.log('111')
s(); // aaa 111 bbb

1
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
var s = a();
console.log(s) // aaa bbb =》a() 和 b() 都已执行
s(); //  s is not a function =》 s 是b() 执行后的结果,不是一个函数,故报错
1
2
3
var s = a();
console.log('111')
s(); // aaa bbb 111 s is not a function
1
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
上次更新时间: 8/4/2020, 8:24:44 PM