Javascript多重赋值重新评估还是结果传递?

Javascript多重赋值重新评估还是结果传递?,javascript,optimization,variable-assignment,Javascript,Optimization,Variable Assignment,我所说的多重分配(或者称为链接?)是一种分配,例如: a = b = c = 2; …之后,a、b和c都等于2 我的优化问题是,给定以下代码: var dom1 = document.getElementById('layout_logos'); var dom2 = document.getElementById('layout_sitenav'); ... function layout_onscroll(){ ... dom1.style.height = dom2.style.

我所说的多重分配(或者称为链接?)是一种分配,例如:

a = b = c = 2;
…之后,
a
b
c
都等于2

我的优化问题是,给定以下代码:

var dom1 = document.getElementById('layout_logos');
var dom2 = document.getElementById('layout_sitenav');
...
function layout_onscroll(){
  ...
  dom1.style.height = dom2.style.top = maxLogoHeight - scrollTop;
  ...
}
从我所读到的内容来看,
layout\u onscroll
中的代码可能是:

dom2.style.top = maxLogoHeight - scrollTop;
dom1.style.height = dom2.style.top;
。。它给出正确的值,但访问dom2两次——一次设置
top
,一次获取
top
。(请注意,我来自.NET背景,Microsoft将所有内容层层包装在访问器函数中,使用这些隐藏的变量进行循环的速度非常慢。)

如果是这样,那么创建一个额外的变量,然后将两个DOM元素都分配给该变量是否更快

  ...
  var temp_var = maxLogoHeight - scrollTop;
  dom1.style.height = temp_var;
  dom2.style.top = temp_var;
  ...
这样做的明显损失来自每次分配临时变量。但是,如果
dom2.style.top
是通过引擎盖下的两个getter函数访问的(例如,如果第一个版本调用
dom2.getStyle().getTop()
,后者反过来解析
dom2
的css中的所有文本作为单词“top”),那么分配一个临时变量可能会更快。

dom1.style.height = dom2.style.top = maxLogoHeight - scrollTop;
…与此不完全相同:

dom2.style.top = maxLogoHeight - scrollTop;
dom1.style.height = dom2.style.top;
相反,右侧操作数
maxLogoHeight-scrollTop
被分配给
dom1.style.height
dom2.style.top

我们可以在以下示例中看到这一点:

片段

var d=document.getElementById('d'); s=d.style.width='abc'; console.log(s);/'abc' d、 style.width='abc'; s=d.样式.宽度; 控制台日志//空字符串
#D{高度:100px;宽度:100px;背景:红色;}

完美!我从未想过将无效值传递给变量。很好的例子。