我正在使用 simple example在 D3 中,我一直对这个 return 语句感到困惑。
function nodeByName(name) {
return nodesByName[name] || (nodesByName[name] = {name: name});
}
我对在返回语句中使用||
运算符有基本的了解,但如果我错了请指正。根据我收集到的信息,如果 nodesByNames[name]
未定义,则会创建一个名为 name
的新对象 nodesByName[name]
.
我想表达的是,我不知道如何围绕返回一个赋值,比如 nodesByName[name]={name:name}
。
最佳答案
当您使用 ||
运算符创建表达式(即 a || b
)时,JavaScript 将返回第一个 操作数计算结果为真值,例如 1
或 true
或任何对象,否则将返回最后一个值。 (所以 a || b || c
将返回 c
如果所有的值都是假的)。
在你的例子中,你有这个:
nodesByName[name] || (nodesByName[name] = {name: name})
Javascript 将从计算左侧 nodesByName[name]
开始。如果这个值是真实的,它将被返回。如果不是,(并且 undefined
不是),右侧将被评估并返回。右侧是一个赋值,在将其赋值给 nodesByName[name]
后,它将返回一个对象 {name: name}
。
拥有这段代码的原因是为 nodesByName[name]
赋值(如果它还没有值的话)。
关于Javascript 返回或赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389774/