0x0、xxxx is not defined 错误原因及解决方法
首先提示 xxxx is not defined 就是表示未定义。
发生原因:
如果你确定加密之前已经定义了这个“变量名”或者“方法名”,那应该是加密后“变量名/方法名”已经发生改变,导致外部调用的时候找不到这个“方法名/变量名”,才会出错误。
如原来函数(方法)为:
代码语言:javascript复制function test(){
//todo
}
加密后函数(方法)可能为:
代码语言:javascript复制function _0xaoem(){
//todo
}
这个时候你去调用 “test” 那肯定是未定义(test is not defined)。解决办法:1.采用 最牛加密V6版本 ,保留 “变量名/方法名” 方法。
如方法名或者变量名为 “test” ,那就这么添加即可。更多规则请点击对应后面的“?”符号可以看到具体的规则。这样加密后,这个“变量名/方法名”不会发生改变。就不会出现这个错误问题。2.提升作用域。原来函数书写:
代码语言:javascript复制function test(){
//todo
}
改成:
代码语言:javascript复制test = function(){
//todo
}
// or
window.test = function(){
//todo
}
这样随便怎么加密,这个 test 方法会一直存在,并且调用不会出现test is not defined。
3.正确的书写(采用闭包)
我们都见过jquery,jquery就是采用闭包的方式书写。
简单来讲就是私有化所有方法(函数)和变量,然后提供公共访问方式。
我们打个样:
代码语言:javascript复制(function(w) {
//定义私有化对象
var T = {};
//绑定方法
T.test = function(){
//todo
}
//提供公共访问方式
w.T = T;
})(window);
//调用test
T.test();
这样随便怎么加密,您后面都可以使用 T 来调用绑定在T上面的方法(函数)及变量。
结语:
其实当我们在写代码的时候就要考虑到这些,方便后面自己调用或者其他人的使用。所以从开始就要规划怎么写合适。而不是上来就干,谁都不爽。