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;背景:红色;}
完美!我从未想过将无效值传递给变量。很好的例子。