Поделиться через


Устранение неполадок скриптов

Все языки программирования содержат элементы, которые могут показаться сложными и неочевидными как новичкам, так и опытным пользователям. Ниже приведены потенциальные проблемные ситуации, с которыми можно столкнуться при создании скриптов JScript.

Синтаксические ошибки

Поскольку в языках программирования используется гораздо более жесткий синтаксис, чем в естественных языках, поэтому при создании скриптов очень важно уделять повышенное внимание небольшим деталям. Например, если вы хотите сделать определенный параметр строкой и забудете заключить его в кавычки, возникнет ошибка.

Порядок интерпретации скриптов

Интерпретация JScript на веб-странице зависит от процесса анализа HTML, используемого в конкретном обозревателе. Скрипт внутри тега <HEAD> интерпретируется перед текстом, расположенным внутри тега <BODY>. Следовательно, когда обозреватель анализирует элемент <HEAD>, объекты, созданные в теге <BODY>, не существуют и не могут использоваться в скрипте.

Примечание

Такое поведение характерно для обозревателя Internet Explorer.Поставщик услуг ASP и сервер сценариев Windows имеют различные модели выполнения (как и другие узлы).

Автоматическое приведение типов

JScript — это слабо типизированный язык с автоматическим приведением. Следовательно, не смотря на тот факт, что значения, имеющие разные типы, не являются строго равнозначными, при вычислении выражений в следующем примере возвращается значение true.

"100" == 100;
false == 0;

Чтобы убедиться, что совпадает как тип, так и значение, используйте оператор строгого равенства (===). При вычислении следующих выражений возвращается значение "false":

"100" === 100;
false === 0;

Приоритет операторов

Порядок выполнения операторов во время вычисления выражения больше зависит от приоритета операторов, чем от порядка операторов в выражении. Поэтому в следующем примере умножение выполняется перед вычитанием, хотя в выражении оператор вычитания стоит перед оператором умножения.

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

Дополнительные сведения см. в разделе Приоритет операторов.

Использование циклов "for...in" с объектами

Когда скрипт обрабатывает свойства объекта с помощью цикла for…in, порядок, в котором поля объекта назначаются переменной счетчика циклов, не всегда можно предсказать или контролировать. Кроме того, в различных реализациях языка этот порядок может быть разным. Дополнительные сведения см. в разделе Оператор for...in.

Ключевое слово "with"

Хотя ключевое слово with удобно применять для адресации свойств, которые уже существуют в указанном объекте, его нельзя использовать для добавления свойств в объект. Чтобы создать в объекте новые свойства, необходимо обратиться непосредственно к данному объекту. Дополнительные сведения см. в разделе Оператор with.

Ключевое слово "this"

Хотя ключевое слово this существует внутри определения объекта, нельзя просто использовать this или схожие ключевые слова для ссылки на выполняемую в данный момент функцию, если эта функция не является определением объекта. Если функция должна назначаться объекту в качестве метода, скрипт может использовать ключевое слово this внутри данной функции для ссылки на этот объект. Дополнительные сведения см. в разделе Оператор this.

Написание скрипта, отображающего скрипт в Internet Explorer или ASP.NET

Когда интерпретатор встречает тег </SCRIPT>, текущий скрипт останавливается. Чтобы отобразить сам тег "</SCRIPT>", введите его в виде двух или более строк, например, "</SCR" и "IPT>", которые потом объединяются в отображающем их операторе.

Неявные ссылки на окна в обозревателе Internet Explorer

Поскольку в определенный момент времени может быть открыто сразу несколько окон, любая ссылка на окно, являющаяся неявной, указывает на текущее окно. Для других окон необходимо использовать явную ссылку.

См. также

Задачи

Создание кода JScript в Visual Studio

Основные понятия

Отладка JScript в Visual Studio

Другие ресурсы

Создание, компиляция и отладка кода JScript