Jump randomly get much higher height than it supposed to

Hello it is my first time trying to create simple platformer so i thought i would be good to learn stuff thoroughly.
i am still trying to figure out my jumping script which is the following

void Update()
        {
             move  = Input.GetAxis("Horizontal");
             jump = Input.GetButtonDown("Jump");
        }
    	// Update is called once per frame
    	void FixedUpdate () 
        {
            movement();
        }
        void movement()
        {
            if (jump)
            rb2d.AddForce(Vector2.up* JumpStrength);
            if (isGrounded2())
            {
                rb2d.velocity = new Vector2(move*speed,rb2d.velocity.y); 
            } 
        }

i know that i supposed to place the jump action inside is grounded ifs, but everytime i did that the jump sometime arent working so i plan to test it this way.
it also happen when i try this but even though i pressed jump button the same frequency when i fell on the ground it sometimes just jump way too high than it suppoed to be when press jump button on the ground.

TLDR : i want to make responsive jump

It’s because you are holding the jump button longer I am assuming, you continue to add force while the jump boolean is true which makes it so you continiously are adding force to your characters forcing him higher and higher.

set your jump boolean not based on if the button is pressed but also check if you are grounded in your jump check so you only jump whe nthe character is actually grounded

so something like if(jump && isgrounded())