2016-05-02 3 views
-2

Я сейчас работаю над бот-мессенджером. Я еще новичок в яваскрипт и я застрял с этим proplem в 5 дней ...Изменение глобальной переменной внутри функции без ее вызова

Я пытаюсь изменить значение, если «текст» = «JavaScript», как это:

function test() { 
     if (text === 'javascript') { 
      githubSearch = "javascript"; 
     } 
    }; 

Я получил глобальная переменная с именем githubSearch вне функции вида:

var githubSearch; 

Затем я получил переменной вне функции с именем githubRepo, где я называю githubSearch:

var githubRepo = "https://github.com/search?o=desc&q=" + githubSearch + "&s=stars&type=Repositories&utf8=%E2%9C%93"; 

Мой proplem - мне нужно применить изменения, которые я делаю в инструкции if, не вызывая функцию, как я могу это сделать?

+0

Какова точная проблема? Вы получаете сообщение об ошибке? –

+0

Почему бы не создать функцию, которая выполняет поиск «github», и передать там аргумент? И если вы пытаетесь проверить, что тип поиска, то есть javascript, html и т. Д. Храните их в массиве и создайте функцию, которая будет проверять, чтобы убедиться, что она существует. –

+0

Пожалуйста, прочитайте [Какие темы можно задать здесь?] (Http://stackoverflow.com/help/on-topic), [Какие типы вопросов я должен избегать?] (Http://stackoverflow.com/help/dont-ask) и [Как задать хороший вопрос?] (http://stackoverflow.com/help/how-to-ask), прежде чем пытаться задать больше вопросов. Чрезмерное количество плохо полученных вопросов, которые не по теме, заставит вас запретить задавать вопросы, и вы этого не хотите? –

ответ

0

Когда вы назначаете строку переменной «githubRepo», она остается такой, какая есть. Только способ переписать это переназначить что-то в «githubRepo».

Один из способов сделать то, что вы пытаетесь сделать, - использовать функцию, которая возвращает правый URL вместо переменной.

var searchType = 'foo'; 
var getRepoAddress = function(s){ 
    return 'https://'+s+'/index.html'; 
}; 
console.log(getRepoAddress(searchType)); 
searchType = 'bar'; 
console.log(getRepoAddress(searchType)); 

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

Кроме того, похоже, вам нужно разделить первую функцию двух функций, так что вы можете назвать просто еще один:

function getSearchType(text) { 
    if (text === 'javascript') { 
     return 'javascript' 
    } else { 
     return 'not_javascript' 
    } 
} 

function test() { 
    var gitHubSearch = getSearchType('foobar'); 
    // do something with gitHubSearch 
} 

// elsewhere, check the value again 
console.log(getSearchType('javascript')); 
console.log(
    getRepoAddress(getSearchType('javascript')) 
); 
Смежные вопросы