问答详情
源自:7-3 [JavaScript]ES3执行上下文

哪位大神回复一下!

我刚才试了,我声明一个变量var a;然后再继续声明function a(){};那么在控制台会输出typeof a 会是函数,接下里我改了一下,var a=1;继续输出,此时a是number;继续function a(){return 5;}   我强制输出a();控制台说a不是个函数。于是谁能解释一下。是因为function a(){}只有声明过程。没有执行过程吗?我把a 用函数表达式输出,此时才能返回a是个函数。

提问者:葛乌 2016-04-25 22:27

个回答

  • 交替的黑白键
    2016-04-28 07:52:54
    已采纳

    是的,function a(){}只有声明过程;

    顺序是这样的:1.function a(){return 5;}进行函数声明;

                           2.var a被忽略;

                           3.var a=1使a被赋值为1,并覆盖掉了函数声明,使a变成了number

    然后强制输出a()是执行函数的语句,a不是函数当然报错了~

  • 慕前端8664132
    2016-07-31 22:40:34

    这个我明白了