预解析中的函数执行为什么会出现不是一个函数

请问各位为什么最后的a () 会是 a is not a function ?
请问各位为什么最后的a () 会是 a is not a function ?

img

先赋值了30,就不是函数了

a赋值为30,此时a在调用a() 就会报错 a is not a function

变量名和函数名相同就涉及到预编译过程了,也就是你注释的解析过程。预编译后a是变量了,不再是函数了