Semicolon for safety in IIFE

Let now our function called in-place not be with a plus at the beginning, but wrapped in parentheses, like this:

javascript(function() {
  console.log(1); // shows 1
})();

Let the variable num be set outside the function:

javascriptlet num = 1; // semicolon is put

(function() {
  console.log(num); // shows 1
})();

Let now we forgot to put a semicolon:

javascriptlet num = 1

(function() {
  console.log(num); //!! will throw an error
})();

It turns out that such code will generate an error, since JavaScript perceives our function as a continuation of the first line command.

To avoid such problems, you should always put a semicolon before calling a function in-place, like this:

javascriptlet num = 1

;(function() {
  console.log(num); // shows 1
})();

The problem seems to be somewhat contrived. Actually, it is not. There may be such a situation that several scripts from separate files are connected on your page. In this case, a semicolon can be omitted at the end of one file, and this will automatically lead to a problem if the second file starts with an in-place function call.

Therefore, always, always put a semicolon before calling a function in-place, even if you are currently sure that there will be no problems. They may come later.

Let's apply the above and call the function in-place, putting a semicolon at the beginning:

javascript;(function() {
  console.log(1); // shows 1
})();
Задание 1

Determine what will be output to the console without running the code:

javascriptlet str = 'str';

(function() {
  console.log(1);
})();
Задание 2

Determine what will be output to the console without running the code:

javascriptlet str = 'str'

(function() {
  console.log(1);
})();