Этот вопрос относится к Javascript в классическом ASP. Это не имеет ничего общего с Javascript, работающим в браузерах.
Типичная конструкция для модуля JS, предназначенная для повторного использования, выглядит следующим образом:
(function(globalScope) {
... declarations here...
}(this));
Это позволяет синтаксически инкапсулировать код, чтобы разрешить проверки анализатором / компилятором во время выполнения. Он также обеспечивает управление областями, так что переменные и функции, объявленные в curlies, не будут видны извне.
Другой типичной конструкцией является «экспорт» объекта или функции, принадлежащих внутренней области, во внешнюю область с помощью присваивания, например:
(function(globalScope) {
var data = ['Alpha', 'Beta', 'Gamma'];
function helper(a) { .... }
function search(d) { .... }
// "export" a function so it is externally visible
globalScope.searchData = search;
}(this));
// typeof this.searchData == "function"
// typeof this.data == "undefined"
// typeof this.helper == "undefined"
// typeof this.search == "undefined"
Это все довольно типично.
При использовании такой конструкции в классическом ASP (внимание: серверный javascript !!) двигатель JS запускается. Я получаю 500 ошибок.
Почему?
Можно ли использовать концепцию определения объема и "экспортировать" вещи в глобальную область видимости в классическом ASP?
Во время выполнения браузера «this» оценивается как «window». Каково значение глобального "this" в классической среде исполнения ASP на стороне сервера? Можно ли назначить новые свойства этому «этому»?