我试图理解一些用Javascript编写的代码,但我陷入了语法束缚。

var connections = {}; // I know '{}' means new Object()
var messages = {};


这些对象包含变量path,version等,但是在代码中接下来的几行呢?

connections[ path ] = connections[ path ] || [];
messages[ path ] = messages[ path ] || { version: 0, body: ''};

最佳答案

由于connectionsmessages是对象,因此[]并不表示数组索引,而是访问成员的语法,其中使用变量来查找变量的名称。

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/

10-12 00:17
查看更多