我现在正在研究一个信使机器人。我仍然是javascript的新手,我在5天内一直坚持这个问题......
如果“text”=“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";
我的问题是我需要在不调用函数的情况下应用我在if语句中所做的更改,我该怎么做?
答案 0 :(得分: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'))
);