Transferred from: http://blog.sina.com.cn/s/blog_85295a390100xzxn.html
In fact, summed up as follows:
The function must be bracketed if it is to invoke it for execution. At this point, the function () is actually equal to the function's return value. Of course, some have no return value, but have performed the behavior in the body of the function, this is the fundamental, that is, as long as the parentheses, will execute the function body code.
Without parentheses, the function name is used as a pointer to the function, which is not the result of the function, because the function body code will not be run. It simply passes the address where the body of the function is located and, when needed, finds the function body to execute.
So in general, we are using the reason that is without brackets. This is also due to the two semantics of the parentheses, because the parentheses are "function call operators", which is equivalent to executing such a function, so the resulting problem is understood after understanding.
In addition: In addition to the two sides without parentheses, you can also add brackets on both sides to achieve a copy of the function, rather than execute the function, if the left without parentheses to the right of the parenthesis, is actually equivalent to produce a property rather than a method, when called only with the property name or function name, Instead of using the function call operator parentheses, because it is equivalent to a property, of course, it can be called by a function call, plus parentheses, take the example is written Person.sayhello =sayhi (), When calling SayHello, you can use Person.sayhello or Person.sayhello () directly, both of which achieve the same effect.
Baidu knows the answer:
The function must be bracketed if it is to invoke it for execution. At this point, the function () is actually equal to the function's return value. Of course, some have no return value, but have performed the behavior in the body of the function, this is the fundamental, that is, as long as the parentheses, will execute the function body code. Without parentheses, the function name is used as a pointer to the function, which is not the result of the function, because the function body code will not be run. It simply passes the address where the body of the function is located and, when needed, finds the function body to execute.
The problem of adding parentheses when calling a function in JS