我有这段代码:
function list(target, letters, lvls) {
var index = 0;
(function iter(s, lvl) {
if(lvl++ == lvls)
return target.appendChild(document.createTextNode(
++index + ' - ' + s + '\n'
));
for(var i=0; i<letters.length; ++i)
iter(s + letters[i], lvl);
})('', 0);
}
list(document.getElementById('output'), 'abc', 3);
但我不知道这种类型的函数语法。 有人可以向我解释函数行为以及这段代码的确切步骤。 并提前感谢
答案 0 :(得分:0)
这似乎在遍历字符串&#39; abc&#39;并使用字符串中所有字符的组合创建尽可能多的X字母字符串。
所以通话是list([element ID to output strings], [string of all possible letters], [size of strings to generate])
以下示例 -
<script type="text/javascript">
function list(target, letters, lvls) {
var index = 0;
(function iter(s, lvl) {
if(lvl++ == lvls)
return target.appendChild(document.createTextNode(
++index + ' - ' + s + '\n'
));
for(var i=0; i<letters.length; ++i)
iter(s + letters[i], lvl);
})('', 0);
}
list(document.getElementById('output'), 'ab', 2);
</script>
<div id="output"></div>
将使用输入字符串(param 2)中的字符输出所有可能的两个字母字符串(由参数3定义),并将导致 -
1 - aa 2 - ab 3 - ba 4 - bb
<强>解释强>
在方法内部,第二个名为iter
,其参数为s
和lvls
。上
首次运行时,解析为iter
方法的参数为空白和0.它命中了for
运行循环,直到字符串letters
中的所有字母都用完为止,
每次递归调用iter方法。每次添加当前字母
迭代s
,以及字符串letters[i]
中的下一个字母。每一次
以递归方式调用自身,它会构建字符串,直到指定级别的数量为止
已达到该特定字符串,然后返回结果以及index
值。这只是表示字符串计数的数值。