В строгом режиме мы не можем использовать выражения с выраженным выражением (IIFE) Следующая программа доказывает, что я не могу использовать IIFE в строгом режиме. Если я прокомментирую 'use strict', это работает. Это из-за того, что каждое выражение в строгом режиме должно иметь имя?Вызванное вызывное выражение Expression в строгом режиме
'use strict'
(function _test() {
var obj = {`enter code here`
a: 2,
b: 'name',
c: function _c(){
console.log('a: ' + this.a + " b: "+ this.b);
}
};
obj.c();
})();
Ниже приводится выход
(function _test() {
^
TypeError: string is not a function
at Object.<anonymous> (/home/ganesh/temp/let.js:2:1)
at Module._compile (module.js:456:26)
at Object.Module.`enter code here`_extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:929:3
Вы остановились после того, как точка с запятой ' 'использования strict''. – Pointy
@Pointy Я думал о том же, но автоматическая точка с запятой должна добавить его, не так ли? Или что-то в выражении после его предотвращения? – Tushar
@Tushar no !! Это не место, где произойдет точка с запятой, как должно быть ясно из сообщения об ошибке. Анализатор интерпретирует код как ' (параметры)' из-за '()' вокруг функции. Но строка '' use strict'' не является функцией и, следовательно, ошибкой. –
Pointy