我正在阅读Jon Duckett的书“ Javascript and jQuery”。在有关事件侦听器的部分中,他指出:

 如果在选定的DOM节点上触发事件时使用命名函数,请首先编写该函数。 (您也可以使用匿名函数)

并遵循以下代码:

function checkUsername() {
  var elMsg = document.getElementById('feedback');
  if (this.value.length < 5) {
    elMsg.textContent = 'Username must be 5 characters or more';
  } else {
    elMsg.textContent = '';
  }
}

var elUsername = document.getElementById('username');
elUsername.addEventListener('blur', checkUsername, false);


由于解释器将在处理脚本之前先检查并查找所有命名的函数和变量,因此在将函数传递给addEventListener之前,函数为什么有关系?

最佳答案

就脚本执行而言,这无关紧要,但是它有助于保持一致的可维护性顺序,这实际上只是一种说法,它使代码更易于阅读和理解。

在JavaScript中,函数和变量声明始终位于其包含范围的顶部,因此在哪里编写函数都没有关系。

我建议订购:


指令
变量声明
功能声明
变量实例化
代码执行


使用此顺序还使开发人员可以轻松地将函数声明切换为变量实例,例如:

function foo() {
    ...do stuff...
}




var foo;
foo = switch ? function () {
        ...do stuff...
    } : function () {
        ...do other stuff...
    };


并且,它有助于防止在作者误认为函数或变量的范围时发生愚蠢的错误。

10-05 20:55
查看更多