Ошибка JS "redeclaration" var, когда это первая строка в программе?
SCRPT5039: Redeclaration of const property line 1 character 1
line1:var editObj = null;
Это начало файла, и я проверил, чтобы убедиться, что переменная не находится в других вызываемых файлах js. Это говорит о том, что я объявлю его позже? (если это так, что ссылка на строку не полезна) или что в этом плохого?
7 ответов
EDIT: исправлено. По крайней мере, для меня. Я получил эту ошибку до ошибки redeclaration:
HTML1113: Document mode restart from Quirks to IE9 Standards
это говорит о том, что IE находит то, что он считает ошибкой, поэтому снова загружает страницу в режиме причуд. Загрузка страницы дважды заставляет думать, что все объявлено дважды. Поэтому решение состоит в том, чтобы найти то, что IE не понравилось.
сначала я пробежал страницу через онлайн HTML валидатор. Затем я запустил свой javascript через jsLint. После всего этого IE9 казался счастливым. И в качестве бонуса у меня есть код лучшего качества. Я надеюсь.
Я получил эту ошибку со следующим кодом:
var window;
я добавил Это объявление для обхода ошибки узла при использовании следующего кода:
if (!window) {
//node-specific stuff
}
без вышеуказанного объявления узел wold жалуется. В конце концов, я решил скопировать / вставить, а не пытаться разделить один и тот же файл между реализациями узла и браузера.
у меня была аналогичная проблема с такой же ошибкой, но моя первая строка кода была alert(0);
который я вставил, чтобы убедиться, что скрипт загружается! Интересно, что скрипт был загружено в соответствии с инструментами разработчика IE9, но первая строка никогда не выполнялась, и ошибка указывала на это alert(0);
как повторное объявление. Я даже вставил строки и пробелы перед ним, и номер строки и символа соответственно изменился. Однако это (очевидно) не было тем, что объявлено заново, потому что это даже не декларация, не говоря уже о новой декларации!
Я удалил куски из конца скрипта, пока он выполнил alert(0);
(указывая, что скрипт загружен и успешно проанализирован), и я обнаружил, что оскорбительная строка:
var screen;
получается ИЕ9 уже window.screen
С которым столкнулось это заявление, и переименование мое screen
to eScreen
Исправлена проблема.
поэтому мой ответ: Не доверяйте IE9 указывает, где находится redeclaration!
(также стоит отметить, что скрипт отлично работал в своей первоначальной форме на IE7, IE8 и IE10, а не на IE9.)
У меня была та же проблема в моем коде, и оказалось, что IE показывает неправильную строку, появляется redeclaration. В моем случае это была история, которую я использую позже в коде. Вы должны проверить весь код для redeclaration констант. Вы можете попытаться прокомментировать часть кода и посмотреть, когда он выдает эту ошибку.
ошибка возникает, потому что вы объявили некоторую глобальную/локальную переменную, которая соответствует свойству браузера по умолчанию. Что-то вроде
var window = '';
var navigator = '';
Попробуйте удалить / комментировать такое объявление и посмотреть эффекты.
У меня была такая же ошибка и наткнулся на этот пост. Хотя у меня не было той же корневой проблемы, что и OP, я думал, что поделюсь своим решением, если другие совершат ту же ошибку и приедут сюда. Я получил ошибку в отдельном файле js. После упрощения я обнаружил, что могу генерировать ошибку из следующего кода:
var foo = null;
var bar = null;
var localData = null;
ошибка сказала, что это из первой строки. Однако фу не объявляли повторно. Проблема заключалась в том, что localData должен был использоваться в другом месте (не в моем коде.) Независимо от того, насколько глубоко в файле localData была объявлена ошибка, указанная как находящаяся в первой реальной строке кода.
Итак, если другие решения не работают, попробуйте переименовать каждую переменную в файле кода, чтобы определить, какая из них может вызвать проблему. Не верьте, что отладчик указывает на правую линию.
встречено: HTML5/JS Window Store приложение.
из-за ошибки при выполнении слияния git я обнаружил, что дважды включил скрипт в свой HTML. Таким образом, когда он запускал сценарий во второй раз, он переопределял переменную.
и это только дало мне ошибку для первого const
, что сбивало меня с толку, когда я пытался удалить переменную или добавить другую в файл, это всегда давало мне ошибку для первой строки.