2016-06-15 44 views
1

所以我發現這個腳本在線,並且我瞭解除了2部分之外的所有內容:在調用Javascript函數之後括號是什麼?

1)var first = getUrlVars()[「id」]; var second = getUrlVars()[「page」];

我從來沒有見過帶括號的函數,它意味着什麼?

2)函數(米,鍵,值)

哪裏這些參數從(米,鍵,值)來嗎?

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); 
+0

getUrlVars()返回一個數組或對象,[..]表示對返回值的數組元素或屬性的屬性訪問。 –

+0

1)該函數返回一個對象'{id:1,page:2}'和'getUrlVars()[「id」]'返回1(在本例中)。 2)閱讀https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace尤其是「將函數指定爲參數」。這很有趣。 –

回答

5

var first = getUrlVars()["id"];

這條線被調用getUrlVars()函數,然後訪問返回對象的id屬性,然後first變量設置爲值的財產。

function(m,key,value)是一個匿名函數,作爲參數傳遞給String對象上的replace函數。 Docs here。從本質上講,它是傳遞一個函數到replace函數的這個參數:

的函數被調用,以創建新的子(到位,從參數#1接收到的子字符串)。提供給此函數的參數在下面的「指定函數作爲參數」一節中進行了介紹。

+0

很好的答案!謝謝! –

0

1)它基本上只是鏈接,你知道getUrlVars會返回一個對象,括號引用返回對象的屬性。 2)非常相似的邏輯。 window.location.href返回一個String,你鏈接.replace()方法。

function(m,key,value)是你通過更換(回調),這是一個標準的JS方法,你可以看到文檔(與參數說明)位置:String.prototype.replace()

0

()方法調用

該方法返回一個字典對象(初始化爲var vars = {})。使用vars["something"],您可以執行字典查找以從返回的對象中檢索數據。

可以重寫ypur代碼爲更快版本:

var dict = getUrlVars(); // Build dictionary (method invocation) 
var first = dict["id"]; // Lookup 
var second = dict["page"]; // Lookup 

較短碼既不快,也不是更具可讀性。

相關問題