我试图理解一些用Javascript编写的代码,但我陷入了语法束缚。
var connections = {}; // I know '{}' means new Object()
var messages = {};
这些对象包含变量path,version等,但是在代码中接下来的几行呢?
connections[ path ] = connections[ path ] || [];
messages[ path ] = messages[ path ] || { version: 0, body: ''};
最佳答案
由于connections
和messages
是对象,因此[
和]
并不表示数组索引,而是访问成员的语法,其中使用变量来查找变量的名称。
var path = 'x'
connections[path] = connections[path] || [];
上面的,因为
path = 'x'
等于connections.x = connections.x || [];
就是说,如果存在以
path
值命名的两个对象的成员,请将其保留(将其当前值分配给自身),否则(在这里将||
用于合并)创建一个新的空数组,或者新的{ version: 0, body: '' }
分别。注意,合并/逻辑或可以很容易地从左到右链接。例如,在某些情况下,您可能想要执行以下操作:
function createItem(color) {
// if a color is specified in the arguments, use that
// otherwise, if a color is specified in the settings object for this instance
// of the current user control, use that. otherwise, fall back to the global
// default values. if none of these settings have been defined, use black.
color = color || instanceSettings.defaultColor
|| globalSettings.defaultColor
|| '#000000';
...
}
关于javascript - 对象数组的Javascript文字符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8572442/