This is explained pretty well in https://v2.vuejs.org/v2/guide/events.html#Method-Event-Handlers.
Basically, the event handler can be either
- a method name, such as
@input="changeName"
- a valid Javascript statement, such as
@input="changeName()"
or@input="userName="Name "+Math.random()"
Vue performs checking automatically to detect which case it is.
If you interested, checkout out this core codes at https://github.com/vuejs/vue/blob/19552a82a636910f4595937141557305ab5d434e/dist/vue.js#L10086 .
var handlerCode = isMethodPath
? ("return " + (handler.value) + "($event)")
: isFunctionExpression
? ("return (" + (handler.value) + ")($event)")
: handler.value;