jsHint problema de "function no definida", ¿el order de las declaraciones de funciones es importante?

Pasando este código a través de jsHint:

var A = function (spec) { "use strict"; var a = function () { return b(); }; var b = function () { return 5; }; a(); }; 

devuelve este error:

 Line 4: return b(); 'b' is not defined. 

Entiendo que esto podría tener que ver con "izar" como se explica aquí: order de function de JavaScript: ¿por qué es importante?

Sin embargo, el siguiente código devuelve el mismo error:

 var A = function (spec) { "use strict"; function a () { return b(); } function b () { return 5; } a(); }; 

Si entiendo correctamente, al less el segundo fragment de código no debe devolver un error. ¿Estoy equivocado?

Incluso teniendo en count el mecanismo de elevación, todavía no entiendo por qué el primer fragment de código debe ser incorrecto. La function a solo se invoca después de que se define la function b , por lo que b estaría en el cierre de a. ¿Está mi código incorrecto o jsint está equivocado?

Entiendo que esta pregunta es puramente académica, porque el código funciona como se espera en todos los browseres. Sin embargo, me gustaría saber por qué jsint arroja un error.

3 Solutions collect form web for “jsHint problema de "function no definida", ¿el order de las declaraciones de funciones es importante?”

Esto es un falso positivo en jsLint.
Ambos fragments de código funcionan bien.

Ignora la advertencia.

El primer ejemplo es un problema de elevación porque a () hace reference a b () antes de declararse. La solución es tener 'var a, b;' después de su "uso estricto"; statement.

jsHint está tratando de ayudarte señalando problemas potenciales y códigos no convencionales.

En este caso, no es feliz porque podría ser difícil de entender para un humano, a pesar de que es un Javascript perfectamente válido.

  • WebStorm: suprima JavaScript de advertencia de param no utilizado
  • JSLint (website del Validador de Javascript) - ¡Error! Implícito global:
  • Jquery y Jslint - '$' se utilizó antes de que se definiera
  • (... ()) vs. (...) () en javascript closures
  • ¿Cuál es la forma aprobada por JSLint de crear una cadena larga?
  • ¿Tiene algún sentido usar JSLint y seguirlo?
  • jslint.com | No reconoce localStorage
  • cómo solucionar el post jslint Inseguro '.'
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.