Search code examples
javascriptbooleannegate

How to negate bool inside function in JS?


I'm writing some script now and I have a problem when trying to negate boolean inside a function. I mean this:

var test = true;

function changeThisBoolPlease(asd){
  asd=!asd;
}

alert(test);
  changeThisBoolPlease(test);
alert(test);

alerts true, then true.

Any ideas? Isn't JS reference perfect?

EDIT:

Ok, this was only a part of my function:

function przesun(kolor, figury, castlings, x1, y1, x2, y2, strona) {
    kolor = nowaPozycjaKolor(kolor,x1, y1, x2, y2);
    figury = nowaPozycjaFigur(figury,x1, y1, x2, y2);
    strona = !strona;
}

Actually I cannot return this value. How to?


Solution

  • Objects are not passed by reference but by value which is a reference (copy of reference)...

    In your example you're not even passing an object but a primitive value type.

    If you want a reference, then you need to wrap it in object element like:

    var test = { val: true };
    
    function changeThisBoolPlease(asd){
        asd.val=!asd.val;
    }
    
    alert(test.val);
    changeThisBoolPlease(test);
    alert(test.val);