为不同的变量分配相同的功能

时间:2014-07-02 19:05:53

标签: javascript wurfl

我正在浏览WURFL.js来源,我在页面底部看到了这一点:

var logo=document.getElementById("hero"),heroText=document.getElementById("hero"), ...

显然,变量logoheroText指的是同一件事。这不是JavaScript中DOM解析的不必要开销(因为JavaScript每次都要查找id hero)吗?显然,效率更高的是:

var logo=document.getElementById("hero");
var heroText = logo;

在这种情况下,heroText可能是另一个对象,或者也可能指向与logo相同的对象。我不知道哪个是因为我不知道JavaScript解释器是如何工作的(尽管我是一个C#人,一个学习者)。

所以我的问题是这样的:(我假设WURFL没有犯错误)JavaScript如何解释这两行?提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果你做

,那么差异就是(如果没有返回DOM元素)
var getObj = function() { return {} };
var a = getObj();
var b = getObj();
a.test = 'hi';
console.log(b);
// Object {} 

但如果你这样做:

var getObj = function() { return {} };
var a = getObj();
var b = a;
a.test = 'hi';
console.log(b);
// Object {test: "hi"} 

一个导致两个唯一对象,另一个导致两个对同一对象的引用。

var a = document.getElementById('notify-container')
var b = document.getElementById('notify-container')
a.test = 'hi'
console.log(b.test);
//"hi"

因此,在您正在展示的实例中,是的,

效率更高
var logo=document.getElementById("hero");
var heroText = logo;

答案 1 :(得分:1)

显然接缝是错误的。因为document.getElementById会返回' live'节点的表示。这意味着每当该元素发生变化时,包含节点(logo,heroText)的变量也会发生变化;另外,如果你检查这两个变量的相等性,它们将是相同的。