Javascript functions are first-classobjects because they can have properties and methods just like any other object. (The term first-class citizen means that the citizen (a type, object, entity, or value) supports all operations generally available to other citizens of the same kind.)
For example, you can define this.name in a function fcn(){...}. Consequently, this leads to the function acting like a class in other notable languages like C++, Java, or Python.
Since functions are first-class, callbacks are possible, as well as anonymous functions and closures.
A special keyword that refers to the current object, but this is specified by the way you called that function (Remember, you can only call this in a function).