2012-01-23 1 views
1

なぜ次のコードは変数aを1に増やさないのですか?プリミティブ値は、JavaScriptで値によって渡されますので初心者のためのJavaScriptの引数

var a =5; 

function abc(y){ 
    y++; 
} 

abc(a); 

//a is 5 not 6 why? 

が、これは

var a = 5; 

function abc(){ 
a++; 
} 

abc(); 

//a is 6 

答えて

3

を行います。

値を更新するには、オブジェクトにaを置き、オブジェクトが参照渡しされているという事実を利用することができます(ほとんどの場合、実際には参照のコピーが渡されますが、それを心配してください):

var obj = { a: 5 }; 

function abc(o){ 
    o.a++; 
} 

abc(obj); 
+0

これは私の答えの1番目のオプションと似ています – nivanka

1

これは引数をとりますが、値を返しません。とき

yが、私は初心者の便宜上、この

  1. var a = 10 
    
    function increase(){ 
        a++ 
    } 
    
    increase(); 
    
  2. var a = 10; 
    
    function increase(a){ 
        return a++; 
    } 
    
    a = increase(a); 
    
+0

ヒント:リストのコードの先頭には、各リストレベルの4つのスペースが必要です。したがって、この場合はコードの前に8桁のスペースが必要です。 –

+0

次回は心に留めておきます – nivanka

0

を行うには、2つの方法、簡単な言葉で

を提案し、このためだけの引数でありますabc(a)による呼び出し関数の場合、 'a'は関数abcに渡されませんが、その値は 'y'にコピーされます。 (その値渡し)。 'y'だけが増加しているので、 'a'の更新値は表示されません。

関連する問題