The error is a result of the missing semicolon on the third line:
window.Glog = function(msg) {
  console.log(msg);
}; // <--- Add this semicolon
(function(win) {
  // ...
})(window);
The ECMAScript specification has specific rules for automatic semicolon insertion, however in this case a semicolon isn't automatically inserted because the parenthesised expression that begins on the next line can be interpreted as an argument list for a function call.
This means that without that semicolon, the anonymous window.Glog function was being invoked with a function as the msg parameter, followed by (window) which was subsequently attempting to invoke whatever was returned.
This is how the code was being interpreted:
window.Glog = function(msg) {
  console.log(msg);
}(function(win) {
  // ...
})(window);
    Every line that begins with a (, [, `, or any arithmetic operator, must begin with a semicolon if you want it to be interpreted as its own line ~ Otherwise, it may combine with the previous line by accident. All other line breaks have implicit semicolons.
That's it. Done.
Consider the following:
func()
;[0].concat(myarr).forEach(func)
;(myarr).forEach(func)
;`hello`.forEach(func)
;/hello/.exec(str)
;+0
;-0
Following the above rules prevent the above from being interpreted as
func()[0].concat(myarr).forEach(func)(myarr).forEach(func)`hello`.forEach(func)/hello/.forEach(func)+0-0
To mention what will happen: brackets will index, parentheses will be treated as function parameters. The backtick would transform into a tagged template, regex will turn into division, and explicitly +/- signed integers will turn into plus/minus operators.
Of course, you can avoid this by just adding a semicolon to the end of every linebreak, but don't believe that doing this can let you code like a C programmer. Since when you don't end a line with a semicolon, Javascript might implicitly add one on your behalf against your desires. So, keep in mind statements like
return       // Implicit semicolon, will return undefined.
    (1+2);
i        // Implicit semicolon on this line
   ++;   // But, if you really intended "i++;"
         // and you wrote it like this,
         // you need help.
The above case will happen to return/continue/break/++/--. Any linter will catch this with dead-code or ++/-- syntax error (++/-- will never realistically happen).
Finally, if you want file concatenation to work, make sure each file ends with a semicolon. If you're using a bundler program (recommended), it should do this automatically.
Error Case:
var userListQuery = {
    userId: {
        $in: result
    },
    "isCameraAdded": true
}
( cameraInfo.findtext != "" ) ? searchQuery : userListQuery;
Output:
TypeError: (intermediate value)(intermediate value) is not a function
Fix: You are missing a semi-colon (;) to separate the expressions
userListQuery = {
    userId: {
        $in: result
    },
    "isCameraAdded": true
}; // Without a semi colon, the error is produced
( cameraInfo.findtext != "" ) ? searchQuery : userListQuery;
    For me it was much more simple but it took me a while to figure it out. We basically had in our .jslib
some_array.forEach(item => {
    do_stuff(item);
});
Turns out Unity (emscripten?) just doesn't like that syntax. We replaced it with a good old for-loop and it stoped complaining right away. I really hate it that it doesn't show the line it is complaining about, but anyway, fool me twice shame on me.
When I create a root class, whose methods I defined using the arrow functions. When inheriting and overwriting the original function I noticed the same issue.
class C {
  x = () => 1; 
 };
 
class CC extends C {
  x = (foo) =>  super.x() + foo;
};
let add = new CC;
console.log(add.x(4));
this is solved by defining the method of the parent class without arrow functions
class C {
  x() { 
    return 1; 
  }; 
 };
 
class CC extends C {
  x = foo =>  super.x() + foo;
};
let add = new CC;
console.log(add.x(4));
    I faced same issue with this situation:
let brand, capacity, color;
let car = {
  brand: 'benz',
  capacity: 80,
  color: 'yellow',
}
({ color, capacity, brand } = car);
And with just a ; at the end of car declaration the error disappred:
let car = {
  brand: 'benz',
  capacity: 80,
  color: 'yellow',
}; // <-------------- here a semicolon is needed
Actually, before ({ color, capacity, brand } = car); it is needed to see semicolon.
  **Error Case:**
var handler = function(parameters) {
  console.log(parameters);
}
(function() {     //IIFE
 // some code
})();
Output: TypeError: (intermediate value)(intermediate value) is not a function *How to Fix IT -> because you are missing semi colan(;) to separate expressions;
 **Fixed**
var handler = function(parameters) {
  console.log(parameters);
}; // <--- Add this semicolon(if you miss that semi colan .. 
   //error will occurs )
(function() {     //IIFE
 // some code
})();
why this error comes?? Reason : specific rules for automatic semicolon insertion which is given ES6 stanards
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With