почему «q» не определен в функции

#javascript

#javascript

Вопрос:

почему (q) не определен

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

Комментарии:

1. Потому что он существует только в другой функции.

2. Узнайте о областях действия переменных.

Ответ №1:

Вызов a function внутри другого function не создает замыкания. Вам нужно объявить функцию внутри другой функции, чтобы создать замыкание.

Замыкание — это комбинация функции и лексической среды, в которой эта функция была объявлена

В вашем случае вы можете q в качестве аргумента.

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

Ответ №2:

В вашем коде область действия q зависит только от функции. И вы пытаетесь получить доступ к той же переменной из этой функции. Вам нужно объявить q вне функции. Пожалуйста, смотрите приведенный ниже код.

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

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