首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将相同的函数赋给不同的变量

将相同的函数赋给不同的变量
EN

Stack Overflow用户
提问于 2014-07-03 03:05:53
回答 2查看 234关注 0票数 0

我在浏览WURFL.js源代码时,在页面底部看到了以下内容:

代码语言:javascript
运行
复制
var logo=document.getElementById("hero"),heroText=document.getElementById("hero"), ...

显然,变量logoheroText引用的是同一个东西。这是不是给JavaScript中的DOM解析带来了不必要的开销(因为JavaScript每次都必须查找id hero )?显然,一个更有效的方法是:

代码语言:javascript
运行
复制
var logo=document.getElementById("hero");
var heroText = logo;

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

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

EN

回答 2

Stack Overflow用户

发布于 2014-07-03 03:15:02

不同之处在于(如果它不返回DOM元素),如果您返回DOM元素

代码语言:javascript
运行
复制
var getObj = function() { return {} };
var a = getObj();
var b = getObj();
a.test = 'hi';
console.log(b);
// Object {} 

但如果你这样做了:

代码语言:javascript
运行
复制
var getObj = function() { return {} };
var a = getObj();
var b = a;
a.test = 'hi';
console.log(b);
// Object {test: "hi"} 

一个结果是两个唯一的对象,另一个是对同一对象的两个引用。

代码语言:javascript
运行
复制
var a = document.getElementById('notify-container')
var b = document.getElementById('notify-container')
a.test = 'hi'
console.log(b.test);
//"hi"

因此,在您展示的实例中,是的,这样做效率更高

代码语言:javascript
运行
复制
var logo=document.getElementById("hero");
var heroText = logo;
票数 2
EN

Stack Overflow用户

发布于 2014-07-03 03:12:31

很明显,这是一个错误。因为document.getElementById返回节点的“实时”表示。这意味着每当该元素发生变化时,保存该节点的变量(徽标、heroText )也会发生变化;而且,如果检查这两个变量是否相等,则它们将是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24539105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档