У меня простой вопрос, связанный с однострочным программированием. Первый пример:
function test(a)
{
var b=a.toString();
return b.replace("a","b");
}
Это очень просто (эта функция, конечно, бесполезна), но вопрос здесь немного сложнее: что если бы я сделал это в одну строку? У меня есть мысли, но скажите, правильно ли это работает в отношении очистки памяти:
function test(a)
{
return (arguments[1]=a.toString()).doSomething().doSomethingMore(arguments[1]);
}
Это, конечно, пример, но идея проста: использовать аргументы в качестве контейнера для локальных переменных - я не уверен, но насколько я знаю, когда функция заканчивается, аргументы также удаляются? Или создание новых элементов в аргументах определяет этот элемент глобально? Из моих тестов кажется, что я прав, но мне любопытно посмотреть, пробовал ли кто-нибудь это? Это безопасное и чистое решение ?:) Спасибо за любые комментарии.
Вот более реальная проблема с проблемой сценария One-Line:
function (number,limiter)
{
return ((arguments[2] = number.toString().replace(
new RegExp("(\\d+)(\\d{3})($|"+limiter+")"),
'$1'+limiter+'$2$3')) == number) ?
arguments[2] :
arguments.callee(arguments[2],limiter);
}
Эта однострочная функция работает с заданной строкой и возвращает ее или рекурсивно анализирует в той же функции. (в другом потоке я показываю, как это можно сделать без рекурсии, но это не проблема).