Javascript 在将函数分配给事件之前,将其存储在变量中有什么好处吗? 1. 2.

Javascript 在将函数分配给事件之前,将其存储在变量中有什么好处吗? 1. 2.,javascript,Javascript,我的想法是,在第一种情况下,每次事件发生时都需要重新解析函数(因为没有更好的词),而在第二种情况下,它只指向已经解析的函数 如果不是这样,可能还有另一个(任何)区别 更新 如果我理解正确的话,它们之间是有区别的,最好使用第二个 1. 2. 在您当前的表单中,没有区别(匿名函数甚至可能快一点)。单独存储函数的唯一优点是在循环中执行时(或者如果函数可能有其他用途) 例如: var a = function() { // }; window.onresize = a; // ... a();

我的想法是,在第一种情况下,每次事件发生时都需要重新解析函数(因为没有更好的词),而在第二种情况下,它只指向已经解析的函数

如果不是这样,可能还有另一个(任何)区别

更新

如果我理解正确的话,它们之间是有区别的,最好使用第二个

1. 2.
在您当前的表单中,没有区别(匿名函数甚至可能快一点)。单独存储函数的唯一优点是在循环中执行时(或者如果函数可能有其他用途)


例如:

var a = function() {
    //
};
window.onresize = a;
// ...
a();
var elements=document.getElementsByTagName('input');
对于(var i=0;i
每个元素都将获得自己的函数副本,这会增加页面的内存使用

如果将函数存储在循环外部:

var elements = document.getElementsByTagName('input');

for ( var i = 0; i < elements.length; i++ ) {
    element[i].onkeydown = function () {
        // whatever
    }
}
var elements=document.getElementsByTagName('input');
var eventListener=函数(){
//随便
};
对于(var i=0;i
它们将共享相同的功能



p.S.正如@VisioN所指出的,更好的方法是使用。同样的规则也适用于此。

在您当前的表单中,没有区别(匿名函数甚至可能快一点)。单独存储函数的唯一优点是在循环中执行时(或者如果函数可能有其他用途)


例如:

var a = function() {
    //
};
window.onresize = a;
// ...
a();
var elements=document.getElementsByTagName('input');
对于(var i=0;i
每个元素都将获得自己的函数副本,这会增加页面的内存使用

如果将函数存储在循环外部:

var elements = document.getElementsByTagName('input');

for ( var i = 0; i < elements.length; i++ ) {
    element[i].onkeydown = function () {
        // whatever
    }
}
var elements=document.getElementsByTagName('input');
var eventListener=函数(){
//随便
};
对于(var i=0;i
它们将共享相同的功能



p.S.正如@VisioN所指出的,更好的方法是使用。同样的规则也适用于那里。

两种方法都很糟糕。改用
addEventListener
。你们打算重用它吗?@VisioN,这个问题在那个里同样适用@Fabricio Matté:谢谢,没有其他问题:)此外,只有当对象引用同一个对象时,才会认为它们是相等的,因此您可以通过尝试
a===window.onresize
来进行自己的测试,您将看到这两个对象都指向同一个函数对象。这也是通常使用构造函数和原型的原因之一。另外,有点不相关,但我在阅读后才很好地掌握了函数声明和函数表达式,尽管谷歌上有几十个关于这些术语的好结果。这两种方法都很糟糕。改用
addEventListener
。你们打算重用它吗?@VisioN,这个问题在那个里同样适用@Fabricio Matté:谢谢,没有其他问题:)此外,只有当对象引用同一个对象时,才会认为它们是相等的,因此您可以通过尝试
a===window.onresize
来进行自己的测试,您将看到这两个对象都指向同一个函数对象。这也是通常使用构造函数和原型的原因之一。另外,有点不相关,但我在阅读后才很好地掌握了函数声明和函数表达式,尽管谷歌上有几十个关于这些术语的好结果。你可以删除
addEventListener
部分,因为它不适用。我还根据您的回答添加了一个小的后续问题。@pdknsk-如果您还有其他问题,您应该将其作为其他问题发布。不要只是增加你当前的问题…@JosephSilber将
addEventListener
建议移到顶部,IMO:P你可以删除
addEventListener
部分,因为它不适用。我还根据您的回答添加了一个小的后续问题。@pdknsk-如果您还有其他问题,您应该将其作为其他问题发布。不要只在你当前的问题上添加内容…@JosephSilber将
addEventListener
建议移到顶部,IMO:P
var elements = document.getElementsByTagName('input');

for ( var i = 0; i < elements.length; i++ ) {
    element[i].onkeydown = function () {
        // whatever
    }
}
var elements = document.getElementsByTagName('input');
var eventListener = function () {
    // whatever
};

for ( var i = 0; i < elements.length; i++ ) {
    element[i].onkeydown = eventListener;
}