2017-08-29 3 views
0

私のコードを動作させるためには、私の変数のすべて(または少なくとも80%)を宣言し、私はすでにスコープ機能内でこれを行っています...これはなぜですか?例えば:スコープ関数で宣言した後に関数内でjavascript変数を宣言しなければならない

$(function() { 
    var cUnit, fUnit, temp, wind, humidity, weatherDescrpt, wData; 
    cUnit = true; 
    fUnit = false; 

    $("#fUnit").click(function() { 
    var cUnit = true; 
    var fUnit = false; 
    toggleTemp(cUnit,fUnit); 
    }); 

    function setAttribute(wData) { 
    cUnit = true; 
    fUnit = false; 
    temp = displayTemp(wData.main.temp,fUnit); 
    } 
}); 

UPDATE --- 私は信じて私は最終的にtoggleTemp()内の文が..物事は一例では、今

+1

ローカルに設定された変数を必要としないだろう見せているコードを(https://でjsfiddle .net/45uhz1ee /)。問題の原因となっている他のコードがある可能性があります。あなたの実際のコードをさらに表示し、おそらく[最小、完全で、かつ、検証可能な例](https://stackoverflow.com/help/mcve) –

+0

を提供してくださいローカル変数なしで動作しない部分はどれですか?表示されたコードの中には、 'setAttribute()'関数を呼び出すものはありませんが、その関数は外部関数の変数を使用しようとする唯一の場所です。あなたはあなたの質問をうまくやってはいけないと思うものの自己完結型の例を見せてください。また、どの行が間違っているのかを指摘するコードにいくつかのコメントを入れてください。 – nnnnnn

+0

@Patrick&@ nnnnnn ...私は謝罪しています。私は積み重ねが新しく、コードが「あまりにも多く」置かれているかどうかは分かりませんでした。私が間違っていると思われる場所...さらに私はあなたの提案のいくつかを入力したので、私はいくつかの望ましい機能を得ていますが、すべてではありません –

答えて

0

を行ってもいいように見える場合は...あまりにも多くの問題を発見したあなた示されている、あなたが実際に行う必要が絶対に(wDataパラメータを除く)なしのローカル変数:ローカル変数でこれらの定数アウトすることができます(そしておそらく必要があります)もちろん因子の

$(function() { 
    $("#fUnit").click(function() { 
    toggleTemp(true, false); 
    }); 

    function setAttribute(wData) { // looks like dead code that is called from nowhere 
    displayTemp(wData.main.temp, false); 
    } 
}); 

。しかし、その後、あなたはだけ宣言をだろうし、どこにも、あなたのモジュールスコープに割り当てる:[ここで働く]、

$(function() { 
    const cUnit = true; 
    const fUnit = false; 
    $("#fUnit").click(function() { 
    toggleTemp(cUnit, fUnit); 
    }); 

    function setAttribute(wData) { 
    displayTemp(wData.main.temp, fUnit); 
    } 
});