关于javascript:如何在JS中否定bool里面的函数?

How to negate bool inside function in JS?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
var test = true;

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

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

警报为真,然后为真。

有什么想法吗?JS引用是否完美?

编辑:

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

1
2
3
4
5
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;
}

实际上,我不能返回这个值。如何?


您只是在您所讨论的示例中更改了EDOCX1的值(0)。

试试这个

1
2
3
4
5
6
7
8
9
var test = true;

function changeThisBoolPlease(asd){
    return !asd;
}

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

或者,但不推荐,您可以这样做

1
2
3
4
5
6
7
8
9
var test = true;

function changeTestBoolPlease(){
    test = !test;
}

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

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

在您的示例中,您甚至不会传递对象,而是传递基元值类型。

如果需要引用,则需要将其包装在对象元素中,如:

1
2
3
4
5
6
7
8
9
var test = { val: true };

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

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


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

1
2
3
4
5
6
7
8
9
var test = true;

function changeThisBoolPlease(asd){
    return !asd;
}

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