我在浏览WURFL.js源代码时,在页面底部看到了以下内容:
var logo=document.getElementById("hero"),heroText=document.getElementById("hero"), ...显然,变量logo和heroText引用的是同一个东西。这是不是给JavaScript中的DOM解析带来了不必要的开销(因为JavaScript每次都必须查找id hero )?显然,一个更有效的方法是:
var logo=document.getElementById("hero");
var heroText = logo;在这种情况下,heroText可以是另一个对象,也可以引用与logo相同的对象。我不知道是哪一个,因为我不知道JavaScript解释器是如何工作的(尽管我是一个C#用户,一个学习者)。
所以我的问题实际上是这样的:(我假设WURFL没有犯错误) JavaScript如何解释这两行?谢谢,提前说好。
发布于 2014-07-03 03:15:02
不同之处在于(如果它不返回DOM元素),如果您返回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;发布于 2014-07-03 03:12:31
很明显,这是一个错误。因为document.getElementById返回节点的“实时”表示。这意味着每当该元素发生变化时,保存该节点的变量(徽标、heroText )也会发生变化;而且,如果检查这两个变量是否相等,则它们将是相同的。
https://stackoverflow.com/questions/24539105
复制相似问题