イベントハンドラを使うときにhtmlに書くと

<button id="btn" onclick="func();">クリック</button>
関数名()と実行まで書くのに

イベントハンドラをJavaScript内に書くと
document.getElmentById("btn").onclick=func;と関数名だけで()を付けないのは何故ですか?

onclick=func;←これは、イベントハンドラ(onclick)に関数を代入をしてるんですか?

そもそもイベントハンドラは属性ということで、もう何をやってるのかよく分からなくなってて、
これは理屈抜きで覚えるべきですか?

お願いします