Как я могу получить доступ к этой переменной вне функции в JavaScript? - PullRequest
0 голосов
/ 27 мая 2018
function testing() {
  var test = function() {
    console.log("hi");
  };
  return test;
}
testing.test;

это не утешает содержимое переменной test.

Ответы [ 4 ]

0 голосов
/ 27 мая 2018

Существует много способов решения этой проблемы, вот некоторые из них,

Возвращает саму переменную и запускает функцию,

function testing() {
  var test = function() {
    console.log("hi");
  };
  return test;
}
testing()(); // <-- weird as heck, testing() returns a function, and we execute it.

Запускаем функцию и возвращаемпеременная,

function testing() {
  var test = function() {
    console.log("hi");
  };
  return test();
}
testing();

Превратить его в объект,

var testing = {
  test: function(){ console.log("hi") }
}

testing.test() // <-- access the test however you want.

Вернуть объект,

function testing() {
  return {
    test: function() {
     console.log("hi");
    };
}
testing().test // <-- this is a function, execute it as you wish

Превратить его в прототип.

function Testing(){}
Testing.prototype.test = function() {
 console.log("hi");
};
new Testing().test() // access it
0 голосов
/ 27 мая 2018

Вы можете просто выполнить функцию теста после выполнения функции тестирования:

function testing() {
  var test = function() {
    console.log("hi");
  };
  return test;
}
testing()();

Если вы хотите использовать testing как объект, вы можете вернуть один:

function testing() {
  var test = function() {
    console.log("hi");
  };
  return {test:test};
}
testing().test();
0 голосов
/ 27 мая 2018

Ваша функция testing() возвращает другую функцию.Вы должны присвоить возвращаемое значение переменной, а затем вызвать эту функцию, чтобы получить результат, который вы ищете:

function testing() {
  var test = function() {
    console.log("hi");
  };
  return test;
}
var test = testing();
test()

//Or alternatively:
testing()();
0 голосов
/ 27 мая 2018

Вам необходимо выполнить функцию test

function testing() {
  var test = function() {
    console.log("hi");
  };
  return test(); // changed here
}
testing();

В противном случае создайте объект testing и пусть test будет методом этого объекта

var testing = {
  test: function() {
    console.log("hi");
  }

}
testing.test();
...