Diferença entre argumentos nas chamadas setInterval

Qual é a diferença entre essas chamadas setInterval e quais devem ser usadas?

setInterval("myFunction()",1000)
setInterval("myFunction",1000)
setInterval(myFunction(),1000)
setInterval(myFunction,1000)

Meu palpite é que JS usa eval () nas duas primeiras (strings) e chama as duas últimas diretamente.

Além disso, não entendo a diferença entre as chamadas com e sem parênteses. Aqueles com parênteses chamam diretamente e depois periodicamente chamam seu valor de retorno?

questionAnswers(1)

yourAnswerToTheQuestion