Javascript 返回或赋值?

标签 javascript d3.js return or-operator

我正在使用 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 将返回第一个 操作数计算结果为真值,例如 1true 或任何对象,否则将返回最后一个值。 (所以 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/

相关文章:

java - 从子类返回数据

javascript - 函数无法计算页面元素的分数和更改值

Javascript window.close() 和 window.stop() 逻辑还是技术?

javascript - vendor 前缀为 'requestAnimationFrame' 的实现之间有什么区别?

javascript - 无需临时矩阵的旋转和平移 R-T 矩阵

d3.js - d3js 强制节点 xy 起始位置

d3.js - D3 圆弧间距

javascript - 如何为plot.ly js图例着色以及为什么它是黑色的?

error-handling - 在 Mathematica 中捕获错误(不是异常)

java - java中返回语句的最佳实践?