关于前端:JavaScript-加密混淆之后运行-xxxx-is-not-defined

2次阅读

共计 815 个字符,预计需要花费 3 分钟才能阅读完成。

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 下面的办法(函数)及变量。

结语:

其实当咱们在写代码的时候就要思考到这些,不便前面本人调用或者其他人的应用。所以从开始就要布局怎么写适合。而不是上来就干,谁都不爽。

正文完
 0