Enabling/Disabling 2 scripts with one button

I have 2 playable characters that I would like to switch between.
I created 2 separate playermovement sripts and attached to the characters.
Then I created a switch controls sript and attached it to both of the characters:

public BearMovement BM;
public PlayerMovement PM ;

void Start ()
{
   BM = GetComponent<BearMovement>();
   PM = GetComponent<PlayerMovement>();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        PM.enabled = !PM.enabled;
        BM.enabled = !BM.enabled;
    }
}

The switch controls script seems to work, but it only disables/enables playermovement script from first line after “if”. Why doesnt it enable/disable both of the sripts whe written like this? Is there a way to fix it?
When I divide the scripts into two separate "if"s with GetKeyUp it works. But ideally I would like it to happen simultaniusly when pressing space down.

Quick explanation of GetKeyDown vs GetKeyUp

Update fires as fast as your computer can calculate the code. GetKeyDown fires constantly as long as it can detect that the button is pressed. This means even if you think you have just tapped the key, the time the key is down might be long enough that your processor can go through your code multiple times. It might be disabling and enabling them multiple times in a single keypress making it seem like it’s not doing anything, when it actually is. Set a debug.log message in your if statement and see how many times it prints a message on a single keypress.

GetKeyUp fires once and only once, when the key returns to its default position. This means your code will only execute once.

Thank for the explanation. I changed GetKeyDown for GetKeyUp as it suits my purpose better.
It still doesnt change the state of BM script. Pressing space only disables/enables the PM script.