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

Javascript 如何在JS中否定bool内部函数?,javascript,boolean,negate,Javascript,Boolean,Negate,我现在正在写一些脚本,当我试图在函数中否定布尔值时遇到了一个问题。我的意思是: var test = true; function changeThisBoolPlease(asd){ asd=!asd; } alert(test); changeThisBoolPlease(test); alert(test); 警报为真,然后为真 有什么想法吗?JS引用不是很完美吗 编辑: 好的,这只是我功能的一部分: function przesun(kolor, figury, castl

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

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

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

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

“它不是通过引用传递的,而是通过引用的值传递的…”不,该值是布尔值,不是引用。是的,您在本例中是对的,但我假设
true
只是一个示例(事实上是这样),实际上他传递的是一个对象。编辑是否要返回
strona
?如果是的话,就把它还给我。请看我的答案,我相信它会回答你的问题。编辑不会改变任何东西。更改函数的参数值只会更改函数的参数。它对向函数发送这些值时使用的任何变量(如果有的话)都没有影响。@robbmj:当您回答问题时,OP收到了一个通知。这就足够了,不要评论说“看我的答案”。公平地说,我的评论更让OP知道,即使在他们编辑答案后,答案也不需要更改。