Parenthèses dans les IIFE en JavaScript

Habituellement, lors de l'appel immédiat d'une fonction, des parenthèses sont utilisées à la place d'un signe plus, car cette méthode de formatage est considérée comme plus évidente :

javascript(function() {
  console.log('!');
}());

Le plus souvent, les parenthèses d'appel de fonction sont placées à l'extérieur, comme ceci :

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

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet result = (function() {
  return '!';
}());

console.log(result);
Задание 2

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet result = (function() {
  return '!';
})();

console.log(result);
Задание 3

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet result = (function() {
  return '!';
});

console.log(result);
Задание 4

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptlet result = (function() {
  return '!';
});

console.log(result());