关于预解析的问题
(function(){ console.log(fn); function fn(){ return 1; } })();
我测试了如上代码输出函数体,add成功被预解析了;
console.log(fn); for (var i=0;i<0;i++){ function fn(){ return 1; } }
测试这段代码发现输出undefined,难道fn函数被当做var全局变量解析了吗?
想知道预解析的时候到底是如何定位关键字var或者function的呢?是逐个单词找吗?是以空格分割单词吗?
16
收起
正在回答
2回答
代码在执行前会先被预解析,所有的全局变量会被拿在最前面,并为赋值为undefined。
fn是在for循环中,没有被预解析,只是有这个变量或函数,所以打印fn时,还没有加载到。
老师在课程中也说了,不建议在语句块中去声明函数或变量。
HTML5与CSS3实现动态网页 2018
- 参与学习 1887 人
- 提交作业 4643 份
- 解答问题 5760 个
有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星