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里面不是一个作用域吗?
function 制造的作用域
全局作用域
并不是 if 里面的变量导致的问题,而是函数外第 2 个 foo 变量提升导致覆盖第 1 个 foo,因为值不会提升,故值为 undefined。然后再调用 bar 函数,此时 if 中的判断 !undefined 为 true。
js里只有函数是作用域,没有块级作用域。
这么说吧. javascript只有三种作用域:
with 制造的作用域
最多设置5个标签!
付费偷看金额在0.1-10元之间
function 制造的作用域
全局作用域
并不是 if 里面的变量导致的问题,而是函数外第 2 个 foo 变量提升导致覆盖第 1 个 foo,因为值不会提升,故值为 undefined。然后再调用 bar 函数,此时 if 中的判断 !undefined 为 true。
js里只有函数是作用域,没有块级作用域。
这么说吧. javascript只有三种作用域:
with 制造的作用域
一周热门 更多>