是否可以更改函数参数的值?

Ben*_*Ben 26 javascript parameters jquery function parameter-passing

例如,我有一个带有两个参数的函数function (a,b).我想在函数中,取b的值,并用c替换它.我在想类似的东西$(b).replaceWith(c),但它没有成功.我知道我可以使用新值在函数内创建一个新变量,但是可以更改b本身的值吗?这样的事情是可能的.或者参数设置在石头上?

让我试着解释一下我想做什么.有三个函数,一个是总体函数,然后是两个函数,由toggle事件触发.我希望第二个函数做一些事情来获取一个值并将其传递给第三个函数.所以这里是代码

function(a,b){

    $('selector').toggle(

        //I want this to gather a value and store it in a variable
        function(){},

        //and I want this to accept the variable and value from the previous function
        function(){}
    )}
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一方法是为总体函数添加一个参数c,然后用第一个函数修改它,并将新值传递给第二个函数.

Bol*_*ock 34

您无法通过JavaScript中的引用显式传递; 但是,如果b是一个对象,并且在您修改b的属性的函数中,更改将反映在调用范围中.

如果需要使用原语执行此操作,则需要返回新值:

function increaseB(b) {
    // Or in one line, return b + 1;
    var c = b + 1;
    return c;
}

var b = 3;
b = increaseB(b); // 4
Run Code Online (Sandbox Code Playgroud)

  • @New Guy,那不是真的.在任何一种情况下,您都是通过值传递,但对于对象,值是引用类型.这是一个很好的SO答案,讨论它:http://stackoverflow.com/questions/518000/is-javascript-is-a-pass-by-reference-or-pass-by-value-language/5314911#5314911.尝试实现$(b).replaceWith(c),然后看它不起作用. (3认同)

moh*_*med 14

您无法在JavaScript 中更改整数或字符串的值,您可以更改对象属性的值,例如

function change(x){
x.x=2;
}
Run Code Online (Sandbox Code Playgroud)

打电话时

var y = {x:1};
change(y);
Run Code Online (Sandbox Code Playgroud)

将使yx = 2;