关于变量提升的问题 财富值15

2016-09-26 15:35发布

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

为什么if里面的变量foo会提升到bar的顶端?if里面不是一个作用域吗?

6条回答

并不是 if 里面的变量导致的问题,而是函数外第 2 个 foo 变量提升导致覆盖第 1 个 foo,因为值不会提升,故值为 undefined。然后再调用 bar 函数,此时 if 中的判断 !undefined 为 true。

一周热门 更多>