我有这个全局函数函数:
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)
我在谷歌搜索但只找到了功能解决方案,但没有找到全局功能。
希望这很清楚,谢谢。
答案 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")