Javascript 变量声明语法
Javascript variable declaration syntax
我正在负责一个javascript webapp。它非常复杂,我在语法方面遇到了一些问题:
getThemeBaseUrl = function() {
var customConfigPath = "./customer-configuration";
if (parseQueryString().CustomConfigPath) {
customConfigPath = parseQueryString().CustomConfigPath;
}
var clientId = parseQueryString().ClientId;
return customConfigPath + "/themes/" + clientId;
};
parseQueryString = function() {
var result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m;
while ( m = re.exec(queryString)) {
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
return result;
};
特别是parseQueryString().CustomConfigPath
和var result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m;
第一个似乎是parseQueryString函数的一种属性访问。
第二个似乎是数组声明,但没有 Array() 构造函数。此外,m
值被调用,而假定的数组结果不会在 while 循环中出现。
通过查看:
parseQueryString().CustomConfigPath
可以说parseQueryString()
应该返回一个具有CustomConfigPath
属性的对象。
由此:
var result = {};
你可以看到result
确实是一个对象({}
是一个空对象文字)。它不是一个数组。稍后,在一个循环中,有:
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
因此,我们将属性分配给result
对象。此属性之一将是(正如我们可以预期的那样)一个 CustomConfigPath
.这将取自查询字符串 - 我们将使用正则表达式来执行此操作:re = /([^&=]+)=([^&]*)/g
.因此,执行此代码的网页的地址如下所示:http://example.com/something?SomeKey=value&CustomConfigPath=something
。
为对象分配属性的一般语法为:
result[key] = value;
// key -> decodeURIComponent(m[1])
// value -> decodeURIComponent(m[2])
parseQueryString().CustomConfigPath
调用返回对象的parseQueryString
函数。然后,它访问该对象的 CustomConfigPath
属性。函数前 4 行的常见习惯用语是:
var customConfigPath = parseQueryString().CustomConfigPath || "/.customer-configuration";
var result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m
是 4 个不同变量的声明,而不是数组:
-
result
是一个空对象 -
queryString
是当前 URL 中的查询字符串,删除?
。 -
re
是正则表达式 -
m
是未初始化的变量,它将在稍后的while
循环中分配。
- Javascript函数声明野牛语法减少/减少错误
- JavaScript,声明变量时混淆语法
- Javascript 变量声明语法
- 在井字中声明平局的正确语法
- (教程)脚本由于语法错误而无法运行:块范围的声明
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- 使用正则表达式传递语法有效的c++声明/初始化
- 使用regex传递语法有效的c++声明/初始化(考虑到它们的数据类型)
- javascript中的语法错误:缺少;声明之前
- JSONP语法错误:缺少;声明之前
- 怪异的JS语法:函数声明中的数学运算符
- 变量声明的语法?var a=(function(){})()
- 在JS“if”语句参数中,是否有用于声明本地作用域变量的简明语法
- var声明语法很奇怪,但可以正常工作
- 不能理解JQuery扩展对象声明背后的一些语法
- 变量声明条件语法
- 这个'OR'的正确语法是什么?和& # 39;和# 39;in this 'IF'声明
- Vim中的语法声明函数可能无法返回
- Javascript对象声明中的语法错误
- Javascript对象方法语法声明