首页 新闻 搜索 专区 学院

预编译的问题

0
[已解决问题] 解决于 2018-10-19 17:17

var foo=1;
function fun(){
if(!foo){
var foo=10;
}
console.log(foo);
}
fun();

在预编译预编译过程中,会看if中的变量声明的吗?我记得不看的!但是这里看了,所以又犯迷糊了,求大佬告知!!

山丘3299的主页 山丘3299 | 菜鸟二级 | 园豆:236
提问于:2018-10-19 11:10
< >
分享
最佳答案
1

会看的,预编译时会发生声明提前,var声明的变量在不在if里面都会被提到if前面。除非你用let声明就不会提前

奖励园豆:5
雪旭 | 菜鸟二级 |园豆:227 | 2018-10-19 15:03

了解,了解

山丘3299 | 园豆:236 (菜鸟二级) | 2018-10-19 15:04
其他回答(1)
0
  1. 预编译不仅发生在函数体内,还发生在全局;
  2. 预编译发生在函数或代码执行前一刻。
徒然喜欢你 | 园豆:1661 (小虾三级) | 2018-10-19 11:14

如果不看if:就会找到全局中的foo,foo=1;条件不成立,最终输出1
如果看if:foo为undefined ,条件成立,最终输出10
答案输出10;可是我记得预编译不看if中的

支持(0) 反对(0) 山丘3299 | 园豆:236 (菜鸟二级) | 2018-10-19 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册