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 代码

解决方案 »

  1.   

    A(A_a)()是先执行A函数,再执行A_a函数。等于是执行了:
    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