AutoHotkey used to heavily rely on labels until version 1.1.20. It's reliance on labels had very serious disadvantages. The main one being that labels usually execute in the global scope meaning that any variable defined within a label will be globally available. This sounds great until you realize that for example you can't just use other peoples libraries without making sure that their variables don't interfere with yours.
Working in the global scope when not necessary is simply bad practice.
So this is where functions come in. As of version 1.1.20, every AutoHotkey command that accepts a label-name as a parameter, now alternatively accepts a function-name.