所以我在网上找到了这个脚本,除了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);
答案 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
更短的代码既不快也不易读。