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