2017-06-07 25 views
0

なぜ以下のコードから2つの異なる結果が得られますか?私がやっている唯一の変更は、関数に値を渡すことです。最初のコードでは、グローバル変数 "count"の値を10に、2番目のコードでグローバル変数( "count")の値を30に変更します。JavaScript関数値のグローバル変数値の変更

あなたの第二の機能で

  function addTen(count) { 
 
       count = count + 20; 
 
       return count; 
 
      } 
 
      
 
      var count = 10 
 
      var result = addTen(count); 
 
      console.log(count); //10 
 
      console.log(result); //30

  function addTen(num) { 
 
       count = num + 20; 
 
       return count; 
 
      } 
 
      
 
      var count = 10 
 
      var result = addTen(count); 
 
      console.log(count); //30 
 
      console.log(result); //30

+6

最初のものは、同じ名前の引数によってシャドーされているため、グローバルな 'count'には影響しません。 – georg

+0

最初の例では、グローバル変数countをパラメータ* count *で "上書き"しています。 –

答えて

0

、声明

count = num + 20; 

は、グローバル変数に割り当てられます(スコープ内の唯一のcountです)。それだけ関数スコープのローカル変数にすると、グローバルに影響を与えないために、あなたの最初の関数で

var count = num + 20; 

を使用し、パラメータcountは暗黙のうちに同じ名前のグローバル変数をシャドウイングは、そのようなローカル変数を宣言します。

関連する問題