0x0、xxxx is not defined 谬误起因及解决办法
首先提醒 xxxx is not defined 就是示意未定义。
产生起因:
如果你确定加密之前曾经定义了这个“变量名”或者“办法名”,那应该是加密后“变量名 / 办法名”曾经产生扭转,导致内部调用的时候找不到这个“办法名 / 变量名”,才会出谬误。
如原来函数(办法)为:
function test(){//todo}
加密后函数(办法)可能为:
function _0xaoem(){//todo}
这个时候你去调用“test”那必定是未定义(test is not defined)。解决办法:1. 采纳 最牛加密 V6 版本,保留“变量名 / 办法名”办法。
如办法名或者变量名为“test”,那就这么增加即可。更多规定请点击对应前面的“?”符号能够看到具体的规定。这样加密后,这个“变量名 / 办法名”不会产生扭转。就不会呈现这个谬误问题。2. 晋升作用域。原来函数书写:
function test(){//todo}
改成:
test = function(){//todo}
// or
window.test = function(){//todo}
这样轻易怎么加密,这个 test 办法会始终存在,并且调用不会呈现 test is not defined。
3. 正确的书写(采纳闭包)
咱们都见过 jquery,jquery 就是采纳闭包的形式书写。
简略来讲就是私有化所有办法(函数)和变量,而后提供公共拜访形式。
咱们打个样:
(function(w) {
// 定义私有化对象
var T = {};
// 绑定办法
T.test = function(){//todo}
// 提供公共拜访形式
w.T = T;
})(window);
// 调用 test
T.test();
这样轻易怎么加密,您前面都能够应用 T 来调用绑定在 T 下面的办法(函数)及变量。
结语:
其实当咱们在写代码的时候就要思考到这些,不便前面本人调用或者其他人的应用。所以从开始就要布局怎么写适合。而不是上来就干,谁都不爽。