$
- функция. метод $ может возвращать любую вещь.
Например:
$ = function() {
return {
foo : function() { return 'baa'; },
r1: 1,
r2 : 'string'
}
};
typeof $ <- function
typeof $() <- object
typeof $().foo <- function
typeof $().foo() <- string
typeof $().r1; <- number
typeof $().r2 <- string
Ваше ожидание того, что a##dummyvar
оценит a<value of dummyvar>
, в корне неправильно понимает, что делают макросы (то есть простая подстановка текста). Вывод adummy
правильный.
Вы не можете добиться динамического доступа к значениям переменных во время выполнения с помощью макросов, как вы пытаетесь здесь, поскольку они оцениваются до компиляции и не знают состояния программы во время выполнения.