One way to define a function is:
local function This(x) print(x) end
Another way is:
local This = function(x) print(x) end
Is there a difference between the two and is there a performance difference between them?
Functions are their own data type, kind of like how strings and tables and so on are their own data type.
The only differences of course would be how they're being used.
Your first example is syntactic sugar (a nicer way to write something else) for
lua
local This
This = function(x)
print(x)
end
This makes This
(no pun intended) an upvalue (external local variable) inside the function scope. This also allows for recursion. Your second example would not allow recursion.
Let me use a famous example of recursion
```lua local function fact(num) if (rawequal(num, 0)) then return 1; --// 0! = 1 end return num*fact(num - 1); end
print(fact(5)); --> 120 ```
But if we wrote it in your second example's format:
```lua local fact = function(num) if (rawequal(num, 0)) then return 1; --// 0! = 1 end return num*fact(num - 1); end
print(fact(5)); --> attempt to call a nil value (global 'fact') ```
There is an "attempt to call a nil value" error.