var scope='global'
function A(fun){
scope='local'
return fun
}
function A_a(){
console.log(scope)
}
A(A_a)()
A(A_a())
//==> local local
A(A_a)()
A(A_a())
//==> global local
为什么调用顺序改变 输出值会变? js 代码
function A(fun){
scope='local'
return fun
}
function A_a(){
console.log(scope)
}
A(A_a)()
A(A_a())
//==> local local
A(A_a)()
A(A_a())
//==> global local
为什么调用顺序改变 输出值会变? js 代码
scope='local'
console.log(scope)A(A_a())是先执行A_a函数,再执行A函数。等于是执行了:
console.log(scope)
scope='local'
所以
A(A_a)()
A(A_a())
等于是执行了:
var scope='global'
scope='local'
console.log(scope) //输出local
console.log(scope) //输出local
scope='local'而
A(A_a())
A(A_a)()
等于是执行了:
var scope='global'
console.log(scope) //输出global
scope='local'
scope='local'
console.log(scope) //输出local