嘿傢伙我對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編輯! –