document.onkeydown = function(a) {
//
};
var a = function(a) {
//
};
document.onkeydown = a;
我有一个想法,也许在第一种情况下,每次事件发生时,函数都需要重新解析(因为缺少更好的单词),而在第二种情况下它只是指向到已经解析的函数。
如果不是这样,可能会有另一个(任何)差异。
更新
如果我理解正确的话,这些之间会有所不同,最好使用第二种。
var a = window.onresize = function() {
//
};
// ...
a();
var a = function() {
//
};
window.onresize = a;
// ...
a();
答案 0 :(得分:4)
在您当前的表单中,没有区别(匿名函数甚至可能更快 tad )。单独存储函数的唯一优点是当你在循环中执行它时(或者如果函数可能有其他用途)。
例如:
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;
}
他们都将拥有相同的功能。
P.S。正如@VisioN所指出的,更好的方法是使用addEventListener
。同样的规则也适用于那里。