如何在JS中否定bool里面的函数?

时间:2013-12-14 22:29:32

标签: javascript boolean negate

我现在正在编写一些脚本,在尝试否定函数内部的布尔值时遇到问题。我的意思是:

var test = true;

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

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

警告为真,然后是真的。

有什么想法吗? JS参考不完美吗?

编辑:

好的,这只是我职能的一部分:

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;
}

实际上我无法返回此值。怎么样?

3 个答案:

答案 0 :(得分:3)

您只是在问题的示例中更改asd的值。

试试这个

var test = true;

function changeThisBoolPlease(asd){
    return !asd;
}

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

或者不推荐,你可以这样做

var test = true;

function changeTestBoolPlease(){
    test = !test;
}

alert(test);
changeTestBoolPlease();
alert(test);

答案 1 :(得分:2)

对象不是通过引用传递的,而是通过作为引用的值(引用的副本)传递的......

在您的示例中,您甚至没有传递对象而是传递原始值类型。

如果你想要一个引用,那么你需要将它包装在对象元素中,如:

var test = { val: true };

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

alert(test.val);
changeThisBoolPlease(test);
alert(test.val);

答案 2 :(得分:1)

这是一个范围问题。只需返回并设置:

var test = true;

function changeThisBoolPlease(asd){
    return !asd;
}

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