簡體   English   中英

調用Javascript函數后的括號是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM