如何在JS中否定函数内部的bool



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

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

警报为true,然后为true。

有什么想法吗?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;
}

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

您只是在更改问题示例中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);

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

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

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

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

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

var test = true;
function changeThisBoolPlease(asd){
    return !asd;
}
alert(test);
test = changeThisBoolPlease(test);
alert(test);

最新更新