我有一个与单行编程有关的简单问题。先举个例子:
function test(a)
{
var b=a.toString();
return b.replace("a","b");
}
这很简单(这个函数当然没用),但这里的问题稍微复杂一点:如果我要在一行中完成这个怎么办?我有我的想法,但请告诉我这在内存清理方面是否正常工作:
function test(a)
{
return (arguments[1]=a.toString()).doSomething().doSomethingMore(arguments[1]);
}
这当然是一个例子,但想法很简单:使用参数作为局部变量的容器 - 我不确定,但据我所知,当函数结束时,参数也会被删除吗?还是在参数中创建新元素会使该元素全局定义?从我的测试来看,我似乎是正确的,但我很好奇是否有人尝试过这个?这是一个安全和干净的解决方案吗?:) 感谢您的任何评论。
这是一个更实际的单行脚本问题:
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);
}
这一行函数使用给定的字符串执行操作并将其返回或递归解析到相同的函数。(在其他线程上,我展示了如何在没有递归的情况下完成此操作,但这不是问题的情况)。