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

结语:

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

 

posted @   詩與遠方  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示