为什么在函数中未定义“ q”

时间:2019-03-14 02:41:38

标签: javascript

为什么未定义(q)

var query = function(n) {
  var q = "appear preson"
  n()
}
query(function n() {
  console.log(q)
})

2 个答案:

答案 0 :(得分:2)

在另一个function内部调用function不会创建闭包。您需要在另一个函数中声明该函数以创建闭包。

  

闭包是函数和声明该函数的词法环境的组合

根据您的情况,您可以q作为参数。

var query=function(n){
  var q="appear preson"
  n(q)
}
query(function n(q){
    console.log(q)
  }  
)

答案 1 :(得分:0)

在您的q代码范围中,仅取决于该函数。然后您尝试从该函数访问相同的变量。您需要在函数外部声明q。请参见下面的代码。

    var q;
    var query=function(n){
     q="appear preson"

    n()
    }
    query( function n(){
      console.log(q)
    }  )