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里面不是一个作用域吗?
并不是 if 里面的变量导致的问题,而是函数外第 2 个 foo 变量提升导致覆盖第 1 个 foo,因为值不会提升,故值为 undefined。然后再调用 bar 函数,此时 if 中的判断 !undefined 为 true。
最多设置5个标签!
并不是 if 里面的变量导致的问题,而是函数外第 2 个 foo 变量提升导致覆盖第 1 个 foo,因为值不会提升,故值为 undefined。然后再调用 bar 函数,此时 if 中的判断 !undefined 为 true。
一周热门 更多>