2016-05-02 19 views
-2

私は現在、メッセンジャーボットに取り組んでいます。私はこのような「テキスト」=「javascriptの」場合は値を変更しようとしています呼び出すことなく関数内のグローバル変数を変更する

...私はまだJavaScriptに新しいですし、私は5日間でこのproplemで立ち往生されて:

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

私が得ましたgithubSearchという名前のグローバル変数は、関数の外に、このように見える:次に

var githubSearch; 

私はgithubSearchを呼び出すgithubRepoという名前の関数外の変数を得た:

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'に再割り当てすることだけです。

あなたがしようとしていることの1つの方法は、変数の代わりに正しいURLを返す関数を使用することです。

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

この例では関数は、引数の代わりに外側の関数スコープからの変数を使用するsearchTypeとして取り込みます。関数外の行を読み込むことなく、関数をそのまま理解してテストできるようになりました。あなたが呼び出すことができるように、2つの機能への第一の機能を分割する必要があるよう

また、それが見えるだけで、別の1:

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')) 
); 
関連する問題