调用Javascript函数后的括号是什么?

时间:2016-06-15 18:32:26

标签: javascript function parameters callback

所以我在网上找到了这个脚本,除了2个部分我理解了所有内容:

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

3 个答案:

答案 0 :(得分:5)

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

这一行调用getUrlVars()函数,然后访问返回对象的id属性,然后将first变量设置为该属性的值。

function(m,key,value)是一个匿名函数,作为参数传递给replace对象上的String函数。 Docs here。基本上,它将一个函数传递给replace函数的这个参数:

  

要调用以创建新子字符串的函数(用于替换从参数#1接收的子字符串)。提供给此函数的参数在"将函数指定为参数"以下部分。

答案 1 :(得分:0)

1)它基本上只是链接,你利用知道getUrlVars将返回一个对象,括号引用返回对象的属性。

2)非常相似的逻辑。 window.location.href返回一个String,链接.replace()方法。

function(m,key,value)是您传递给replace()的回调,它是标准的JS方法,您可以在此处查看文档(带参数说明):String.prototype.replace()

答案 2 :(得分:0)

()方法调用

该方法返回字典对象(初始化为var vars = {})。使用vars["something"],您可以执行字典查找以从返回的对象中检索数据。

您可以将ypur代码重写为更快的版本:

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

更短的代码既不快也不易读。