Unity autojump script glitch

So I’m trying to enable autojumping in my jumping script, but when I change GetButtonDown to GetButton, whenever I jump sometimes it launches me high and sometimes low. Can someone tell me what is going on?

Code:
using UnityEngine;

public class Jump : MonoBehaviour
{
    [SerializeField]
    GroundCheck groundCheck;
    Rigidbody rigidbody;
    public float jumpStrength = 2;
    public event System.Action Jumped;


    void Reset()
    {
        groundCheck = GetComponentInChildren<GroundCheck>();
        if (!groundCheck)
            groundCheck = GroundCheck.Create(transform);
    }

    void Awake()
    {
        rigidbody = GetComponent<Rigidbody>();
    }

    void LateUpdate()
    {
        if (Input.GetButton("Jump") && groundCheck.isGrounded)
        {
            rigidbody.AddForce(Vector3.up * 100 * jumpStrength);
            Jumped?.Invoke();
        }
    }
}

Thanks in Advance!

Never used this system for Jumping, but I believe it might help if you move your “Jump Code” to FixedUpdate:

     void FixedUpdate()
     {
         if (Input.GetButton("Jump") && groundCheck.isGrounded)
         {
             rigidbody.AddForce(Vector3.up * 100 * jumpStrength);
             Jumped?.Invoke();
         }
     }