- 发布时间
javascript作用域
- 作者

- Name
- wenjuGao
- github
- @Github
function foo(a) {
bar()
var b = 2
function bar() {
console.log('bar-b=', b) // undefined 变量提升后还没执行赋值
console.log('bar-c=', c) // undefined 变量提升后还没执行赋值
console.log('bar-a=', a) // a a的作用域贯穿整个foo函数包括内部函数的子作用域
a = 'A'
console.log('bar-a=', a) // A 作为参数的变量可以被再次赋值,但是开发中要尽量避免这样的操作
}
console.log('foo-b=', b) // 2 已经执行赋值
console.log('foo-c=', c) // undefined 变量提升后还没执行赋值
console.log('foo-a=', a) // A a执行过赋值操作后整个作用域的a的值都被篡改了
var c = 3
}
// console.log('b=', b) // throw error 未声明
// console.log('c=', c) // throw error 未声明
foo('a')
输出
bar-b= undefined
bar-c= undefined
bar-a= a
bar-a= A
foo-b= 2
foo-c= undefined
foo-a= A