В некоторых случаях наличие нескольких функций самозапуска в одном файле JavaScript вызывает ошибку. Получение второй функции для возврата значения предотвращает ошибку.Ошибка с несколькими самозапускающимися функциями в одном скрипте: случай для точки с запятой
У меня есть баребоны HTML файл ...
<script src="two.js"></script>
<script src="one.js"></script>
... с помощью этих скриптов:
// two.js
(function() {
console.log('1/2')
})()
(function() {
console.log('2/2')
})()
// one.js
(function() {
console.log('1/1')
})()
Когда я открываю файл в Chrome, я получить этот выход:
1/2 two.js:2
Uncaught TypeError: undefined is not a function two.js:6
1/1
Другие браузеры жалуются по-своему. Другими словами, наличие двух самозапускающихся функций в одном скрипте вызывает проблему. Наличие одной самозапускаемой функции для каждого сценария отлично работает. Если я прокомментирую второй скрипт функции two.js, нет проблем.
Однако, если я получу вторую функцию, чтобы вернуть значение, то также нет проблем. Все работает отлично, если я изменю two.js к этому:
(function() {
console.log('1/2')
})()
foo = (function() {
console.log('2/2')
return 'bar'
})()
Почему первая версия сбой и второй успех?
Вы забыли точки с запятой. – elclanrs