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

Aug 1, 2020 7:50:24 PM 33234

本站拥有众多JS加密工具,但是经常有一些用户反馈JS代码加密后运行错误。在次做一系列常见影响加密结果的问题。

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

结语:

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




版权所属:JavaScript加密

原文地址:https://www.jsjiami.com/article/is-not-defined.html

转载时必须以链接形式注明原始出处及本声明。


本文标签:
最新文章
Can "Upgrade" only to "WebSocket".是为什么? 5557
JS setTimeout 方法,JavaScript Hook 劫持setTimeout 7787
文件(文本)不乱码,保存后发给对方,对方打开乱码,怎么处理文件乱码? 11867
MacBook安装Nginx最有效方法 3329
模仿支付宝输入支付密码的UI,带JavaScript 密码输入校验功能 25259
Chrome浏览器模拟微信客户端访问网址,方法图文讲解模拟微信 47351
JavaScript在线加密,最牛加密按次加密计费方式讲解。 53215
丁香公开课请求 sign(签名) 分析过程讲解 15486
JavaScript优雅的跳转,作弊跳转方式,JS防检测跳转。 26147
JS代码书写注意事项,JavaScript代码压缩后为什么报错? 15088

      商务合作:1#vfan.cn(把#换成@),或者联系QQ:84034666

      业务咨询:i#itboy.net(把#换成@),或者联系QQ:8446666

再次输入密码