编程语言
首页 > 编程语言> > javascript – jsHint“函数未定义”问题,函数声明的顺序很重要吗?

javascript – jsHint“函数未定义”问题,函数声明的顺序很重要吗?

作者:互联网

通过jsHint传递此代码:

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

  var b = function () {
    return 5;
  };

  a();
};

返回此错误:

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

据我所知,这可能与“吊装”有关,如下所述:JavaScript function order: why does it matter?

但是,以下代码返回相同的错误:

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

  function b () {
    return 5;
  }

  a();
};

如果我理解正确,至少第二个代码段不应该返回错误.我错了吗?

即使考虑到提升机制,我仍然不明白为什么第一个代码片段应该是错误的.函数a仅在定义函数b后调用,因此b将在闭包中.我的代码错了还是jsHint错了?

我知道这个问题纯粹是学术性的,因为代码在所有浏览器中都能按预期工作.不过,我想知道为什么jsHint会抛出错误.

解决方法:

这在jsLint中是误报.
您的两个代码段都可以正常工作.

忽略警告.

标签:javascript,jslint,jshint
来源: https://codeday.me/bug/20190530/1185648.html