База знаний

Справочная система SP-XML

Связанные темы:

Общие сведения о платформе SP-XML
Структура приложения
Формы описания данных (.xmd)
Встроенные функции
Встроенные объекты
Встроенные глобальные переменные
Экранные формы (.xms)
Язык XQuery
Дополнительные возможности платформы
Первые шаги в освоении платформы SP-XML

Отличия между SP-XML Script и JavaScript

Необходимо понимать, что SP-XML Script и JavaScript – совершенно разные языки, хотя и похожие синтаксически, и имеющие некоторые схожие объекты и функции.

Ниже приведены основные различия между двумя языками.


Типы данных

SP-XML Script по идеологии типов данных находится ближе к VBScript. Строка и дата – скалярные значения, а не объекты. Integer и real – разные типы. String и Date также поддерживаются как объекты, но это сделано для облегчения миграции кода с JavaScript.

В SP-XML Script строки являются бинарно-совместимыми. В них можно хранить как текст так и бинарные данные. Текст при этом хранится в кодировке, заданной в приложении (как правило utf-8).  С одной стороны это дает удобство работы с бинарными данными,  с другой – затрудняет посимвольную обработку строк. Например, функция StrLen() возвращает длину строки в байтах, а StrCharCount() – в символах. Другой пример: вызов StrLeftRange( str, 1 ) нельзя использовать для получения первого символа в строке, необходимо использовать StrLeftCharRange( str, 1 ).

Тип данных для просто даты и даты со временем не различаются. Дата может как содержать время так и не содержать его.

Дата и время в памяти хранятся в структурированном виде (отдельно год, месяц, день и т.д. в виде чисел), без привязки к глобальному времени. Часовой пояс также хранится отдельно. Этот принцип может быть нарушен, если дата сохранятся в базе данных с хранилищем на SQL, где будет осуществлено преобразование к местному типу данных и обратно.

Объект может использоваться как объект, либо может использоваться его скалярное значение, если объект его поддерживает. Например, поле в XML-документе является объектом, но имеет скалярное значение (string, integer и т.д.). При выполнении сравнения, арифметически операциях, преобразовании к строке, объект преобразуется к скалярному значению.

В SP-XML Script используется только строгое сравнение. Undefined, null, ‘’, 0, false – это разные значения.


Массивы

Помимо стандартного массива, аналогичного массиву в JavaScript, в SP-XML существует множество других видов массивов, обобщенно называемых абстрактными массивами (аналог enumerators в VBScript).


Цикл for-in

Цикл for-in работает как в JavaScript только по стандартному объекту, обходя имена всех свойств.

Для абстрактных массивов он работает как цикл foreach в VBScript, обходя все значения.


Функции

SP-XML Script исповедует концепцию библиотек с четким разделением на локальные переменные и глобальные переменные внутри библиотеки. Использование функций внутри кода, как в JavaScript, возможно, но не является рекомендуемой техникой.