为什么未定义(q)
var query = function(n) {
var q = "appear preson"
n()
}
query(function n() {
console.log(q)
})
答案 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)
} )