Briefly describe three types of errors that can occur in JavaScript. Determine which error you believe to be the most difficult to debug. Provide one example of the error you believe to be the most difficult that supports your response, and suggest three actions to aid in the debugging process.