我正在尝试制作一个游戏(粘性,我知道),考虑到我对javascript / jquery的了解还不够好,所以我一直无法切换布尔变量。我尝试了整个var =!var(不知道这意味着什么),但有人推测它只能在目标C中工作(再次,不知道)。我制作了一个JS小提琴http://jsfiddle.net/clarinetking/mLG6c/1/,它现在可以工作,但是我想向我的所有对象添加一个名为“ equip”的变量,并使其开始为false,并在每次按下正确的按钮时将其切换为true。

var sword = {
nam:'Sword',
atk:5,
def:1,
spd:-1,
type:'LeftH',
//equip = false
};


等等

switch ( $(this).attr('id') ) {
        case 'equipsword':
            atk += sword.atk;
            def += sword.def;
            spd += sword.spd;
            //insert equip switch here
            break;

最佳答案

是的!可以在javascript中工作,而不仅仅是C,!是NOT运算符,它基本上与前面的内容相反,因此:

!true === false
!false === true


这也适用于真实/虚假值:

!null === true
!0 === true
!15 === false
!"" === true


因此,要切换布尔值,只需使用以下命令:

var sword = {
   nam:'Sword',
   atk:5,
   def:1,
   spd:-1,
   type:'LeftH',
   equip:false
};
switch ( $(this).attr('id') ) {
    case 'equipsword':
        atk += sword.atk;
        def += sword.def;
        spd += sword.spd;
        sword.equip = !sword.equip;
        break;


但由于从外观上看,案例'equipsword'只会在装备而不是取消装备时才触发,而sword.equip = true;也是如此,特别是因为其他代码可能会更改equip的值,并且那么该切换将无法按预期进行,例如,如果在触发equipsword大小写之前运行了以下代码:

function someFunctionThatGetsCalled(){
   sword.equip = true;
}


它会导致equip为true,然后在触发equispword大小写时,sword.equip将变为false,因为它使用!sword.equip切换。

10-05 20:38