Javascript 为什么输出是12313,背后的逻辑是什么?

Javascript 为什么输出是12313,背后的逻辑是什么?,javascript,hoisting,Javascript,Hoisting,输出是什么?有人能解释一下结果吗。有人能解释一下函数是如何调用的吗 var x=0; 函数hn(){ x++; 控制台日志(x); 返回(函数hn(){ x+=10; 控制台日志(x); }) } hn(hn())(hn())可以通过添加消息来显示评估顺序 计算hn(“A”),打印“A:1”并返回一个函数(我们称之为F1),该函数将x增加10并显示其值 然后计算hn(F1)。它增加x并打印:“函数hn(msg2){ x+=10 console.log(msg2+“:”+x); }:2“=>此处

输出是什么?有人能解释一下结果吗。有人能解释一下函数是如何调用的吗

var x=0;
函数hn(){
x++;
控制台日志(x);
返回(函数hn(){
x+=10;
控制台日志(x);
})
}

hn(hn())(hn())可以通过添加消息来显示评估顺序

  • 计算hn(“A”)
  • ,打印“A:1”并返回一个函数(我们称之为F1),该函数将x增加10并显示其值

  • 然后计算hn(F1)。它增加x并打印:“函数hn(msg2){

    x+=10

    console.log(msg2+“:”+x); }:2“=>此处的消息是函数F1(有点奇怪,ok) 请注意,不会调用F1,只使用它的字符串表示形式。 它返回一个函数(我们称之为F2),该函数将x增加10并显示其值

  • 计算hn(“B”),打印“B:3”并返回一个函数(我们称之为F3),该函数将x增加10并显示其值

  • F2(F3)
    被计算,它将x增加10,并打印“函数hn(msg2)”{

    x+=10

    console.log(msg2+“:”+x); }:13“=>此处的消息是功能F3(有点奇怪,ok) 请注意,没有调用F3,只使用它的字符串表示形式。 它返回一个函数(我们称之为F4),将x增加10并显示其值

  • 请注意,有些函数已创建但从未调用(F1、F3、F5)

    var x=0;
    函数hn(msg){
    x++;
    console.log(msg+“:”+x);
    返回(函数hn(msg2){
    x+=10;
    console.log(msg2+“:”+x);
    })
    }
    hn(hn(“A”)(hn(“B”))