Это должно работать в JS, если вы уберете все данные типа, но вам нужно будет проверить эти значения аргументов по умолчанию, потому что аргументы по умолчанию не поддерживаются.
function map(v, a, b, x, y) {
if(x == undefined || isNaN(x)) x = 0;
if(y == undefined || isNaN(y)) y = 1;
return (v == a) ? x : (v - a) * (y - x) / (b - a) + x;
}
Чтобы конкретно ответить на последнюю часть вашего вопроса, есть две проблемы, которые мешают вашему коду работать как JavaScript:
- JavaScript является свободно типизированным языком, и поэтому объявление типов в аргументах функций недопустимо. Чтобы избежать неожиданных ошибок, вы можете проверить каждый аргумент и выдать ошибку не того типа, который вам нужен.
- JavaScript не позволяет указывать аргументы по умолчанию, но допускает опускание аргументов функции. Это отличается от ActionScript, когда отсутствие аргумента без значения по умолчанию вызовет ошибку. Способ справиться с этим - проверить аргументы на неопределенность и установить значения там, где это необходимо.
Мой дополнительный тест для NaN, описанный выше, является дополнительным предупредительным уровнем и не обязателен, но его можно в равной степени использовать для всех аргументов, чтобы сделать код более надежным.