Q:

issue with immediately-invoking-functions in js

<script>
!function add_them(a,b) { return a+b;} (9,4)
console.log(add_them());
</script>

Question:
it shows: ReferenceError: add_them is not defined, what is the problem? and how to make it show the right result: 13?

A:

You seem to want a simple function declaration:
function add_them(a,b) { return a+b;}
console.log(add_them(9,4));

If you wanted to use an immediately invoked function expression, it might look like this:
console.log(function add_them(a,b) { return a+b; } (9,4));
//          \    expression                      / ^^^^^
//                                                 invocation

however the identifier (add_them) is not reusable outside (after) of the function expression.
Also notice that when your IEFE is supposed to yield some result, the (little) advantage of !function(){}() over (function () {})()? is neglected since the result gets negated.

