如何检查JS中是否存在全局函数?

时间:2018-01-28 14:10:22

标签: javascript

我有这个全局函数函数:

GlobalFunctions = {
      something: function() {

      }
};

我知道如何检查函数是否存在:

if (typeof functionName == "function")

甚至更好:

if (typeof functionName === "function")

但是当我试图找出全局函数是否有效时,我上面提到的那些仍然会返回下一个错误:

if (typeof GlobalFunctions.something == "function")

给出了这个:

angular.js:12520 ReferenceError: GlobalFunctions is not defined
    at r.$scope.continueLogout (my-app.js:197)
    at b.$scope.logout (my-app.js:243)
    at fn (eval at compile (angular.js:13365), <anonymous>:4:209)
    at e (angular.js:23613)
    at b.$eval (angular.js:16052)
    at b.$apply (angular.js:16152)
    at HTMLAnchorElement.<anonymous> (angular.js:23618)
    at HTMLAnchorElement.dispatch (jquery.min.js:3)
    at HTMLAnchorElement.q.handle (jquery.min.js:3)

我在谷歌搜索但只找到了功能解决方案,但没有找到全局功能。

希望这很清楚,谢谢。

2 个答案:

答案 0 :(得分:2)

声明对象时,您没有使用var / let / const关键字。
我的猜测是你的代码以'use strict'运行。

如果没有strict mode,您可以声明没有var关键字的变量,这将在全局对象上设置变量:

  

首先,严格模式使得无法意外创建全局   变量。在正常的JavaScript中错误输入赋值中的变量   在全局对象上创建一个新属性并继续“工作”

strict mode

'use strict'
GlobalFunctions = {
      something: function() {

      }
};

if(GlobalFunctions) console.log('yeah');

没有strict mode

GlobalFunctions = {
      something: function() {

      }
};

if(GlobalFunctions) console.log('yeah');

答案 1 :(得分:1)

找到答案:

if (typeof GlobalFunctions != "undefined")