当函数名和变量名相同时

img


为什么下面那个c会报错啊,第一个是因为函数提升。所有c等于5,那第二个报错是为什么

js允许同一个变量上下文中类型不一样
你在初次调用c()时,由于函数提升,所以不会报函数没有定义的错误
但是你紧接着定义了一个变量c
函数c就被覆盖了,无法访问了
之后你再次调用c(),那么变量是不能像函数一样被调用的
-=-=-=
如果你问IE为什么不智能一点,是函数就调用,是变量就取值
那是因为还可以把函数本身赋值给变量
这样a=c
那么执行a()就等于执行c()