JavaScript 加密混淆之后运行 xxxx is not defined,Javascript 提示xxxx is not defined 怎么办?

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.正确的书写(采用闭包)

我们都见过jqueryjquery就是采用闭包的方式书写。

简单来讲就是私有化所有方法(函数)和变量,然后提供公共访问方式。

我们打个样:

(function(w) {
    //定义私有化对象
    var T = {};
    //绑定方法
    T.test = function(){
        //todo 
    }

    //提供公共访问方式
    w.T = T;

})(window);




//调用test

T.test();

这样随便怎么加密,您后面都可以使用 T 来调用绑定在T上面的方法(函数)及变量。

结语:

其实当我们在写代码的时候就要考虑到这些,方便后面自己调用或者其他人的使用。所以从开始就要规划怎么写合适。而不是上来就干,谁都不爽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值