初学者的javascript参数

时间:2012-01-23 17:33:15

标签: javascript

为什么以下代码不会将变量a增加为1?

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 个答案:

答案 0 :(得分:3)

因为原始值是在JavaScript中按值传递的。

要获取要更新的值,可以将a放在一个对象上并利用对象通过引用传递的事实(好吧,大多数情况下,确实传递了一个引用的副本,但是我们不会担心这个):

var obj = { a: 5 };

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

abc(obj);

答案 1 :(得分:1)

它接受参数,但不返回任何值。

y只是一个论据,我建议两种方法来做到这一点

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

答案 2 :(得分:0)

初学者,

简单来说,当你通过abc(a)调用函数时,'a'不传递给函数abc,但是它的值被复制到'y'。 (它被称为值传递)。由于只有'y'增加,你没有看到'a'的更新值。