![](/img/trans.png)
[英]Javascript, what are (n) and the square brackets doing in this function?
[英]What are the brackets after a call to a Javascript function doing?
因此,我在網上找到了該腳本,除了兩個部分,我了解所有內容:
1)var first = getUrlVars()[“ id”]; var second = getUrlVars()[“ page”];
我從未見過在其后帶有方括號的函數,它是什么意思?
2)函數(m,鍵,值)
這些參數從哪里來(m,鍵,值)?
window.location為: http ://papermashup.com/index.php?id=123&page= home
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var first = getUrlVars()["id"];
var second = getUrlVars()["page"];
alert(first);
alert(second);
var first = getUrlVars()["id"];
該行調用getUrlVars()
函數,然后訪問返回對象的id
屬性,然后將第first
變量設置為該屬性的值。
function(m,key,value)
是一個匿名函數,作為參數傳遞給String
對象上的replace
函數。 文檔在這里 。 本質上,它將一個函數傳遞給replace
函數的以下參數:
用來創建新子字符串的函數(代替從參數#1接收到的子字符串)。 提供給該函數的參數在下面的“將函數指定為參數”部分中進行說明。
1)基本上只是鏈接,您可以利用getUrlVars會返回一個對象,方括號引用返回的對象上的屬性的優勢。
2)非常相似的邏輯。 window.location.href返回一個字符串,您可以鏈接.replace()方法。
function(m,key,value)
是您傳遞給replace()的回調,它是標准的JS方法,您可以在此處查看文檔(帶有參數說明): String.prototype.replace()
()
是方法調用 。
該方法返回一個字典對象(初始化為var vars = {}
)。 使用vars["something"]
您可以執行字典查找以從返回的對象中檢索數據。
您可以將ypur代碼重寫為更快的版本:
var dict = getUrlVars(); // Build dictionary (method invocation)
var first = dict["id"]; // Lookup
var second = dict["page"]; // Lookup
較短的代碼既不會更快,也不會更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.