嘿家伙我对Java脚本很陌生,但已经阅读了一些关于js的初学者书籍,我正在通过MDN文档了解arguments如何在js中工作并碰到以下脚本:了解javascript中参数的基础
function list(type) {
var result = "<" + type + "l><li>";
var args = Array.prototype.slice.call(arguments, 1);
result += args.join("</li><li>");
result += "</li></" + type + "l>"; // end list
return result;
}
var listHTML = list("u", "One", "Two", "Three");
console.log(listHTML); // "<ul><li>One</li><li>Two</li><li>Three</li></ul>"
仔细看看打印出来的东西。
现在这与我预期它的工作方式非常直观。
所以让我们打破它,假设我调用函数列表如下图所示:
list("u", "One", "Two", "Three");
现在
什么列表功能的情况是
var result = "<" + type + "l><li>"; // here type is still -- "u", "One", "Two", "Three" , than why does only u get inserted ??
var args = Array.prototype.slice.call(arguments, 1); // in understand this line
result += args.join("</li><li>");
result += "</li></" + type + "l>"; // end list
return result;
对这一计划的工作,我想通了,关键是第一行只有“u”被插入,而不是所有的参数(请参阅我的评论),但是这段代码是如何完成的,我知道它是一段简单的代码片段,但我真的很开心在这里,抓着我的头看着这段代码。
有人可以解释一下吗?
编辑我的预期成果是:
<uOneTwoThreel><li>One</li><li>Two</li><li>Three</li></uOneTwoThreel>
感谢。
亚历-Z
你有什么期望的输出? –
'type'不是“你”,“一个”,“两个”,“三个” - 它只是“你”。如果你有'function fn(arg1,arg2){// body}',并且你把它叫做fn(“foo”,“bar”,“baz”)','arg1'将会是''foo'', 'arg2'将会是'“baz”',并且第三个参数将不会为它创建一个变量,但是将会在'arguments' – Sacho
@ArunPJohny编辑! –