正在回答
3回答
同学你好, 可以参考“FayeShieh”最新的回答中的教辅理解哦。 函数名与变量名同名的时候, 预解析的时候, 函数会覆盖掉变量。
老师测试了一下同学的代码, 预解析的时候, name = undefined 解析到函数的时候, name变成了function name() {...}。 然后执行代码的时候,函数已经被提升到最前面。 代码从上到下执行, 遇到var name = "xiaoming"的时候, name被赋值为“xiaoming”
控制台打印结果
这一块比较抽象不好理解, 同学可以结合教辅资料, 多听几遍视频,帮助自己更好的理解
如果帮助到了你, 欢迎采纳!
祝学习愉快~~
FayeShieh
2019-05-21 11:05:39
根据老师在解析机制里面讲的,函数与解析优先级要高于变量预解析,无论函数在什么地方申明,都会优先把整个函数提到最前面,所以这一段解析下来就是
function name(){ ... } var t; // t = undefined t = 1; var name; // name = undefined name = "xiaoming";
最后在调用name()的时候,因为后面的变量name已经把前面的函数name覆盖了, xiaoming已经赋值给name,最后出来的结果name是xiaoming,调用name会报错,name不是一个函数。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星