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);//调用testT.test();
这样轻易怎么加密,您前面都能够应用 T 来调用绑定在T下面的办法(函数)及变量。
结语:
其实当咱们在写代码的时候就要思考到这些,不便前面本人调用或者其他人的应用。所以从开始就要布局怎么写适合。而不是上来就干,谁都不爽。