哪位大神回复一下!

来源:7-3 [JavaScript]ES3执行上下文

葛乌

2016-04-25 22:27

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

写回答 关注

2回答

  • 交替的黑白键
    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不是函数当然报错了~

    慕的地679... 回复葛乌

    请问你用的是什么软件?

    2017-05-01 18:15:34

    共 2 条回复 >

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

    这个我明白了

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题